{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 皮马印第安人糖尿病 预测分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先 import 必要的模块\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "#竞赛的评价指标为logloss\n",
    "from sklearn.metrics import log_loss  \n",
    "\n",
    "from matplotlib import pyplot\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据 & 数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6      148             72             35        0  33.6   \n",
       "1            1       85             66             29        0  26.6   \n",
       "2            8      183             64              0        0  23.3   \n",
       "3            1       89             66             23       94  28.1   \n",
       "4            0      137             40             35      168  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "train = pd.read_csv(\"diabetes.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 768 entries, 0 to 767\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 768 non-null int64\n",
      "Glucose                     768 non-null int64\n",
      "BloodPressure               768 non-null int64\n",
      "SkinThickness               768 non-null int64\n",
      "Insulin                     768 non-null int64\n",
      "BMI                         768 non-null float64\n",
      "DiabetesPedigreeFunction    768 non-null float64\n",
      "Age                         768 non-null int64\n",
      "Outcome                     768 non-null int64\n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 54.1 KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 都是数值型，且没有数据缺失"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.845052</td>\n",
       "      <td>120.894531</td>\n",
       "      <td>69.105469</td>\n",
       "      <td>20.536458</td>\n",
       "      <td>79.799479</td>\n",
       "      <td>31.992578</td>\n",
       "      <td>0.471876</td>\n",
       "      <td>33.240885</td>\n",
       "      <td>0.348958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.369578</td>\n",
       "      <td>31.972618</td>\n",
       "      <td>19.355807</td>\n",
       "      <td>15.952218</td>\n",
       "      <td>115.244002</td>\n",
       "      <td>7.884160</td>\n",
       "      <td>0.331329</td>\n",
       "      <td>11.760232</td>\n",
       "      <td>0.476951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.078000</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>27.300000</td>\n",
       "      <td>0.243750</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>117.000000</td>\n",
       "      <td>72.000000</td>\n",
       "      <td>23.000000</td>\n",
       "      <td>30.500000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.372500</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>140.250000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>127.250000</td>\n",
       "      <td>36.600000</td>\n",
       "      <td>0.626250</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>17.000000</td>\n",
       "      <td>199.000000</td>\n",
       "      <td>122.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>846.000000</td>\n",
       "      <td>67.100000</td>\n",
       "      <td>2.420000</td>\n",
       "      <td>81.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Pregnancies     Glucose  BloodPressure  SkinThickness     Insulin  \\\n",
       "count   768.000000  768.000000     768.000000     768.000000  768.000000   \n",
       "mean      3.845052  120.894531      69.105469      20.536458   79.799479   \n",
       "std       3.369578   31.972618      19.355807      15.952218  115.244002   \n",
       "min       0.000000    0.000000       0.000000       0.000000    0.000000   \n",
       "25%       1.000000   99.000000      62.000000       0.000000    0.000000   \n",
       "50%       3.000000  117.000000      72.000000      23.000000   30.500000   \n",
       "75%       6.000000  140.250000      80.000000      32.000000  127.250000   \n",
       "max      17.000000  199.000000     122.000000      99.000000  846.000000   \n",
       "\n",
       "              BMI  DiabetesPedigreeFunction         Age     Outcome  \n",
       "count  768.000000                768.000000  768.000000  768.000000  \n",
       "mean    31.992578                  0.471876   33.240885    0.348958  \n",
       "std      7.884160                  0.331329   11.760232    0.476951  \n",
       "min      0.000000                  0.078000   21.000000    0.000000  \n",
       "25%     27.300000                  0.243750   24.000000    0.000000  \n",
       "50%     32.000000                  0.372500   29.000000    0.000000  \n",
       "75%     36.600000                  0.626250   41.000000    1.000000  \n",
       "max     67.100000                  2.420000   81.000000    1.000000  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 由于输出Outcome只有0和1两个值属于类变量，但是这属于已经进行了特征编码了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 探索数据 单变量分布分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f64318d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.Pregnancies.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of Pregnancies', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可以看出怀孕次数越高，出现机会越少，和经验一致，怀孕次数本来不至于都是很高次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f437ce80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.Age.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of Age', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可看出样本中20岁左右的人数最多，并不能直接说明与糖尿病的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f4314a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.Glucose.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of Glucose', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 大概能说明正常情况是2小时后，血浆浓度在100~120之间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f41bbc88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.BloodPressure.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of BloodPressure', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 舒张压在60~80之间居多，最左侧的0可能是噪声"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f428b128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.SkinThickness.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of SkinThickness', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 感觉和上面的舒张压有相关性关系，最左侧应该是噪声，厚度在20~40居多"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAENCAYAAAARyyJwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmYHdV95vHv23trb0mtXSCBJIyELTAK3hIcWwYDjpGTQCzsx8ZjJsz4MeN9JpDEHg8zTkxCguMHxjEGbCA2S7AzURyMsIEYYxtBsyOEoLWh1tra1ZJ6/80fVS1dLrerb2/qVvN+nuc+fevUqVPn9IV+Vcs9pYjAzMysOyVD3QEzMxveHBRmZpbJQWFmZpkcFGZmlslBYWZmmRwUZmaWyUFhZmaZHBRmZpbJQWFmZpnKhroDA2Hy5MkxZ86coe6GmdkJ5amnntoVEbU91RsRQTFnzhzq6uqGuhtmZicUSZuKqedTT2ZmlslBYWZmmRwUZmaWyUFhZmaZHBRmZpbJQWFmZpkcFGZmlqmooJB0gaS1kuolXV1gfaWke9L1qyTNScsnSXpEUpOkG3Pqj5X0bM5rl6Rvpes+JakxZ91/HpihmplZX/T4hTtJpcBNwHlAA/CkpBUR8VJOtSuAvRExT9Jy4Drgo0Az8FXgjPQFQEQcBM7M2cdTwE9y2rsnIq7q86jMzGzAFPPN7HOA+ohYDyDpbmAZkBsUy4Cvp+/vA26UpIg4BDwmaV53jUuaD0wBftX77g9/P1r1Wo91PvaOk45DT8zM+qaYU08zgc05yw1pWcE6EdEO7AcmFdmHy0iOICKn7I8lPS/pPkmzi2zHzMwGQTFBoQJl0Yc63VkO3JWz/G/AnIh4G/AL4PaCnZKulFQnqa6xsbHIXZmZWW8VExQNQO6/6mcBW7urI6kMGA/s6alhSYuBsoh4qqssInZHREu6+D3g7ELbRsTNEbEkIpbU1vY4+aGZmfVRMUHxJDBf0lxJFSRHACvy6qwALk/fXwI8nHcqqTuX8fqjCSRNz1m8GFhTRDtmZjZIeryYHRHtkq4CVgKlwG0RsVrStUBdRKwAbgXulFRPciSxvGt7SRuBcUCFpI8A5+fcMfUnwEV5u/ycpIuB9rStT/VjfGZm1k9FPY8iIu4H7s8r+1rO+2bg0m62nZPR7ikFyq4BrimmX2ZmNvj8zWwzM8vkoDAzs0wOCjMzy+SgMDOzTA4KMzPL5KAwM7NMDgozM8vkoDAzs0wOCjMzy+SgMDOzTA4KMzPL5KAwM7NMDgozM8vkoDAzs0wOCjMzy+SgMDOzTA4KMzPL5KAwM7NMDgozM8vkoDAzs0xFBYWkCyStlVQv6eoC6ysl3ZOuXyVpTlo+SdIjkpok3Zi3zX+kbT6bvqZktWVmZkOjx6CQVArcBFwILAQuk7Qwr9oVwN6ImAfcAFyXljcDXwW+0k3zH4+IM9PXzh7aMjOzIVDMEcU5QH1ErI+IVuBuYFlenWXA7en7+4ClkhQRhyLiMZLAKFbBtnqxvZmZDaBigmImsDlnuSEtK1gnItqB/cCkItr+fnra6as5YdDXtszMbBAUExSF/jUffaiT7+MR8Vbg99LXJ3rTlqQrJdVJqmtsbOxhV2Zm1lfFBEUDMDtneRawtbs6ksqA8cCerEYjYkv68yDwI5JTXEW3FRE3R8SSiFhSW1tbxDDMzKwvigmKJ4H5kuZKqgCWAyvy6qwALk/fXwI8HBHdHlFIKpM0OX1fDvwB8GJf2jIzs8FV1lOFiGiXdBWwEigFbouI1ZKuBeoiYgVwK3CnpHqSf/0v79pe0kZgHFAh6SPA+cAmYGUaEqXAL4DvpZt025aZmR1/PQYFQETcD9yfV/a1nPfNwKXdbDunm2bP7qZ+t22Zmdnx529mm5lZJgeFmZllclCYmVkmB4WZmWVyUJiZWSYHhZmZZXJQmJlZJgeFmZllclCYmVkmB4WZmWVyUJiZWSYHhZmZZXJQmJlZJgeFmZllclCYmVkmB4WZmWVyUJiZWSYHhZmZZXJQmJlZJgeFmZllclCYmVmmooJC0gWS1kqql3R1gfWVku5J16+SNCctnyTpEUlNkm7MqT9K0r9LelnSaknfzFn3KUmNkp5NX/+5/8M0M7O+6jEoJJUCNwEXAguByyQtzKt2BbA3IuYBNwDXpeXNwFeBrxRo+vqIeAtwFvAeSRfmrLsnIs5MX7f0akRmZjagijmiOAeoj4j1EdEK3A0sy6uzDLg9fX8fsFSSIuJQRDxGEhhHRcThiHgkfd8KPA3M6sc4zMxskBQTFDOBzTnLDWlZwToR0Q7sByYV0wFJE4APAw/lFP+xpOcl3SdpdjfbXSmpTlJdY2NjMbsyM7M+KCYoVKAs+lDnjQ1LZcBdwLcjYn1a/G/AnIh4G/ALjh2pvL7xiJsjYklELKmtre1pV2Zm1kfFBEUDkPuv+lnA1u7qpH/8xwN7imj7ZuDViPhWV0FE7I6IlnTxe8DZRbRjZmaDpJigeBKYL2mupApgObAir84K4PL0/SXAwxGReUQh6f+QBMoX8sqn5yxeDKwpoo9mZjZIynqqEBHtkq4CVgKlwG0RsVrStUBdRKwAbgXulFRPciSxvGt7SRuBcUCFpI8A5wMHgL8AXgaelgRwY3qH0+ckXQy0p219aoDGamZmfdBjUABExP3A/XllX8t53wxc2s22c7ppttB1DSLiGuCaYvplZmaDz9/MNjOzTA4KMzPL5KAwM7NMDgozM8vkoDAzs0wOCjMzy+SgMDOzTA4KMzPL5KAwM7NMDgozM8vkoDAzs0wOCjMzy+SgMDOzTA4KMzPL5KAwM7NMDgozM8vkoDAzs0wOCjMzy+SgMDOzTA4KMzPLVFRQSLpA0lpJ9ZKuLrC+UtI96fpVkuak5ZMkPSKpSdKNeducLemFdJtvS1JaPlHSzyW9mv6s6f8wzcysr3oMCkmlwE3AhcBC4DJJC/OqXQHsjYh5wA3AdWl5M/BV4CsFmv4OcCUwP31dkJZfDTwUEfOBh9JlMzMbIsUcUZwD1EfE+ohoBe4GluXVWQbcnr6/D1gqSRFxKCIeIwmMoyRNB8ZFxG8jIoA7gI8UaOv2nHIzMxsCxQTFTGBzznJDWlawTkS0A/uBST202dBNm1MjYlva1jZgShF9NDOzQVJMUKhAWfShTn/qv7EB6UpJdZLqGhsbe7OpmZn1QjFB0QDMzlmeBWztro6kMmA8sKeHNmd10+aO9NRU1ymqnYUaiIibI2JJRCypra0tYhhmZtYXxQTFk8B8SXMlVQDLgRV5dVYAl6fvLwEeTq89FJSeUjoo6Z3p3U6fBP61QFuX55SbmdkQKOupQkS0S7oKWAmUArdFxGpJ1wJ1EbECuBW4U1I9yZHE8q7tJW0ExgEVkj4CnB8RLwGfAX4AVAM/S18A3wTulXQF8Bpw6UAM1MzM+qbHoACIiPuB+/PKvpbzvplu/qBHxJxuyuuAMwqU7waWFtMvMzMbfP5mtpmZZXJQmJlZJgeFmZllclCYmVkmB4WZmWVyUJiZWSYHhZmZZXJQmJlZJgeFmZllclCYmVkmB4WZmWVyUJiZWSYHhZmZZXJQmJlZJgeFmZllclCYmVkmB4WZmWVyUJiZWSYHhZmZZXJQmJlZpqKCQtIFktZKqpd0dYH1lZLuSdevkjQnZ901aflaSR9My06T9GzO64CkL6Trvi5pS866iwZmqMdfW0cnew+3DnU3zMz6paynCpJKgZuA84AG4ElJKyLipZxqVwB7I2KepOXAdcBHJS0ElgOLgBnALyQtiIi1wJk57W8B/iWnvRsi4vr+D29oXb9yLd99dD1nzZ7ABxdNY1x1+VB3ycys14o5ojgHqI+I9RHRCtwNLMurswy4PX1/H7BUktLyuyOiJSI2APVpe7mWAusiYlNfBzEcHWpp50erXmPymApe2LKfv//5K7y2+9BQd8vMrNeKCYqZwOac5Ya0rGCdiGgH9gOTitx2OXBXXtlVkp6XdJukmiL6OOz8+OkGDra0c8nZs/nCBxZQWiJWbdgz1N0yM+u1YoJCBcqiyDqZ20qqAC4G/jln/XeAU0lOTW0D/q5gp6QrJdVJqmtsbOy+90OgszP4wW82snjWeGbXVDNxdAULp49jzfYDtHd2DnX3zMx6pZigaABm5yzPArZ2V0dSGTAe2FPEthcCT0fEjq6CiNgRER0R0Ql8jzeequqqd3NELImIJbW1tUUM4/h59NVG1jce4j+9Zy7JGThYNGMczW2drG/06SczO7EUExRPAvMlzU2PAJYDK/LqrAAuT99fAjwcEZGWL0/vipoLzAeeyNnuMvJOO0manrP4h8CLxQ5muLj9NxupHVvJRW89NpRTp4yhsqyE1Vv3D2HPzMx6r8egSK85XAWsBNYA90bEaknXSro4rXYrMElSPfAl4Op029XAvcBLwAPAZyOiA0DSKJI7qX6St8u/kfSCpOeB9wFf7OcYj6vW9k5+Xb+bZYtnUFF27NdbXlrCadPG8tLWA3RG/pk7M7Phq8fbYwEi4n7g/ryyr+W8bwYu7WbbbwDfKFB+mOSCd375J4rp03D18vYDtHZ0ctZJb7wGv2jGeJ5v2M/GXYc4pXbMEPTOzKz3/M3sAfZcQ3Jq6W2zxr9h3WlTx1JWIlZvPXC8u2Vm1mcOigH2/OZ9TBxdwaya6jesqygrYd6UMbyy4+AQ9MzMrG8cFAPs+Yb9vG3W+KN3O+U7edJodh9q5XBL+3HumZlZ3zgoBtDh1nZe3XmQt82a0G2d2emRxua9h49Xt8zM+sVBMYBe3HKAzoDFBa5PdJlZU42AzXuPHL+OmZn1g4NiAD3fsA8g84iisqyUqeOq2LzHRxRmdmJwUAyg5xr2M2N8FbVjKzPrzZ5YTcPeI/4+hZmdEBwUA+j5hn2ZRxNdZteM4khbB7ub/KwKMxv+HBQDZN/hVjbtPszbZnd/faLLrImjAF/QNrMTg4NigLywJfmi3eIijiimjK2ksqzE1ynM7ITgoBgg9TubAFgwdWyPdUskZtYk1ynMzIY7B8UAWdfYxLiqMiaPqSiq/uyaUWzbf4S2Dj+fwsyGNwfFAFnfmEz01903svPNrhlFZ8DWfT6qMLPhzUExQNY1NnFqL2aEnZl+Q3uLg8LMhjkHxQBoamlnx4EWTqkdXfQ246rKGFtZxhZfpzCzYc5BMQDWNyYXsntzRCGJGROqfURhZsOeg2IAdD0H+9ReHFFAcvqp8WALh1s9k6yZDV8OigGwrrGJ0hJx0qRRvdpu5oRqAnjJDzIys2HMQTEA1jceYnZNNZVlpb3abuaE5IL28+lT8czMhiMHxQDo7R1PXcZVlzO2qowXtzgozGz4clD0U0dnsGHXoV7d8ZRr5oTqo9N/mJkNR0UFhaQLJK2VVC/p6gLrKyXdk65fJWlOzrpr0vK1kj6YU75R0guSnpVUl1M+UdLPJb2a/qzp3xAH19Z9R2hp7+zTEQUkQVHf2MQhPxrVzIapHoNCUilwE3AhsBC4TNLCvGpXAHsjYh5wA3Bduu1CYDmwCLgA+L9pe13eFxFnRsSSnLKrgYciYj7wULo8bK3rujV2St+DIgJe2uYL2mY2PBVzRHEOUB8R6yOiFbgbWJZXZxlwe/r+PmCpkrkslgF3R0RLRGwA6tP2suS2dTvwkSL6OGTWpbfGnjK5b6eeZtT4graZDW/FBMVMYHPOckNaVrBORLQD+4FJPWwbwIOSnpJ0ZU6dqRGxLW1rGzClUKckXSmpTlJdY2NjEcMYHOsam5gwqpyJo4ubDDDfuKpypo2r4rnN+wa4Z2ZmA6OYoCg0y13+Mzy7q5O17Xsi4u0kp7Q+K+ncIvpyrJGImyNiSUQsqa2t7c2mA2p9YxOnTB5d9GSAhZx9cg1Pbdo7gL0yMxs4xQRFAzA7Z3kWsLW7OpLKgPHAnqxtI6Lr507gXzh2SmqHpOlpW9OBncUP5/hb13iozxeyu5x9cg1b9h1h+/7mAeqVmdnAKSYongTmS5orqYLk4vSKvDorgMvT95cAD0dEpOXL07ui5gLzgSckjZY0FkDSaOB84MUCbV0O/Gvfhjb4DjS30XiwhVP6GRRL5iQ3dtVt2jMQ3TIzG1A9BkV6zeEqYCWwBrg3IlZLulbSxWm1W4FJkuqBL5HeqRQRq4F7gZeAB4DPRkQHMBV4TNJzwBPAv0fEA2lb3wTOk/QqcF66PCz1dY6nfKdPH0d1eSl1G336ycyGn7JiKkXE/cD9eWVfy3nfDFzazbbfAL6RV7YeWNxN/d3A0mL6NdS6Zo3t7xFFeWkJi2eP93UKMxuW/M3sfljX2ERZiTi5l5MBFrLk5Im8tO2Av3hnZsOOg6If1jce4qSJoygv7f+v8ew5NXR0hm+TNbNhx0HRD+sam/p92qnL20+qQYI6n34ys2HGQdFHHZ3Bxl2HOXVK/y5kdxlfXc6CKWMdFGY27Dgo+qhh72FaOzo5dfLAHFFAcvrpmU17ae/oHLA2zcz6y0HRR0dvjR2gIwqAc+fXcrClnSc2+PsUZjZ8OCj6qGvW2FMG8Iji3AWTqSwr4cGXdgxYm2Zm/eWg6KN1jU1MHF1BTR8nAyxkVEUZ5y6o5cHV20m+2G5mNvQcFH20rvFQn6cWz3L+wqls3d/Mi1v8fAozGx4cFH20vo/Pye7J0tOnUiJYuXr7gLdtZtYXDoo+2H+4jV1NrX1+TnaWiaMrOGfuRB58yUFhZsODg6IPXtl5EIAFU8cOSvvnL5zGKzua2LDr0KC0b2bWGw6KPnhlRxIU86cO/KkngA+eMQ0J7n7itUFp38ysNxwUffDK9oOMrihl5oTqQWl/5oRqli2ewR2/3UTjwZZB2YeZWbEcFH3wyo4m5k8d26/Hn/bkc0vn09LewXd/uW7Q9mFmVgwHRR+8suMgpw3S9Ykup9SO4Q/PmsWdj29i5wE/ItXMho6Dopd2NbWw+1ArC6YNblAAfG7pPNo7g2899Oqg78vMrDsOil7qupC9YJAuZOc6edJoPvmuk/nRqte46ZH6Qd+fmVkhRT0K1Y55ZXsSFIN96qnLX35oIXsPtfK3K9dSIvFf33vKoF4bMTPL56DopVd2NjG+upzasZXHZX+lJeL6SxfTEXDdAy/zL8808Il3zeH9b5nC9HFVlJQ4NMxscBUVFJIuAP4BKAVuiYhv5q2vBO4AzgZ2Ax+NiI3pumuAK4AO4HMRsVLS7LT+NKATuDki/iGt/3XgT4HGtPk/j4j7+zHGAfXK9uRC9vH8V31ZaQk3/Mlifm/+ZG7/zUa++v9e5KtAZVkJs2qqmTSmksMt7dSMrmDi6Aqmjati5oRqyvIe0fqxd5x03PpsZiNHj0EhqRS4CTgPaACelLQiIl7KqXYFsDci5klaDlwHfFTSQmA5sAiYAfxC0gKgHfhyRDwtaSzwlKSf57R5Q0RcP1CDHCgRwSs7DvLhxTOO635/tOrYF+8+ds5JbNl3hC37jrC7qZW9h1vZeaCFppY21mw/SEdnMutsWYmYPXEUi2aM44wZ4xlXXX5c+2xmI0cxRxTnAPURsR5A0t3AMiA3KJYBX0/f3wfcqOSf3MuAuyOiBdggqR44JyJ+C2wDiIiDktYAM/PaHHZ2HGjhQHM7px2HO566I4lZNaOYVTPqDes6IzhwpI2t+46wcfdhXt15kJ8+v41/f34b86eO4ZUdB5k3ZQwl3RwN+YjDzAopJihmAptzlhuAd3RXJyLaJe0HJqXlj+dtOzN3Q0lzgLOAVTnFV0n6JFBHcuQxLB4kfeyOp6ELiiwlEhNGVTBhVAULZ4wHprPzQDPPNeynbuMefvCbjUwZW8nS06eyaMa4bgPDzCxXMbfHFvprkv9Une7qZG4raQzwY+ALEdH1AIbvAKcCZ5IcdfxdwU5JV0qqk1TX2NhYqMqAW7t9eAdFIVPGVXHewqn89wtO49KzZxHAXU+8xv99pJ612w/4AUlm1qNigqIBmJ2zPAvY2l0dSWXAeGBP1raSyklC4ocR8ZOuChGxIyI6IqIT+B7Jqa83iIibI2JJRCypra0tYhj991zDPmZOqGbiAD7V7ngpKynhrJNq+PzS+Vx69iya2zu5/beb+O6j61m/q2mou2dmw1gxQfEkMF/SXEkVJBenV+TVWQFcnr6/BHg4kn+qrgCWS6qUNBeYDzyRXr+4FVgTEX+f25Ck6TmLfwi82NtBDZZnXtvHmSdNGOpu9EuJxFkn1fDFDyxg2Zkz2He4lVt+tYHbf7ORNdv8VD0ze6MegyIi2oGrgJXAGuDeiFgt6VpJF6fVbgUmpRervwRcnW67GriX5CL1A8BnI6IDeA/wCeD9kp5NXxelbf2NpBckPQ+8D/jiQA22P3YeaGbLviOcNfvEDooupSXiHXMn8eXzT+OCRdPYtOcQF337V3zp3mdp2Ht4qLtnZsOIRsI56iVLlkRdXd2g7mPl6u38lzuf4sefeTdnn1xT9Ha5t7YOZ0daO9jZ1Mz3f70RAj75rpP57PvmUXMCnmYzs+JIeioilvRUz3M9FemZ1/ZRXioWzRg31F0ZFNUVpVxz4en8x1d+n2VnzuC2X2/g3L99hJseqedwa/tQd8/MhpCDokhPv7aXhTPGU1VeOtRdGVQzJlTzt5cu5mefP5d3zJ3I365cy7l/8x/c/puNtLR3DHX3zGwIOCiK0N7RyfMN+0bM9YlinDZtLLdc/jv8+DPv4tTa0fzPFat5//W/5N66zbR3dA5198zsOPKkgEV4eftBmts6OesEv+OpJ91dT7l48QwWzhjHg6t38D/ue55bfrWer394Ee+eN/k499DMhoKDogjPbN4HwNtPKv4i9kgiiflTxjKvdgyrtx7gZy9u42O3rOKMmeO56IxpTBh17IK3pwExG3kcFEV45rW9TB5Twaya6qHuypCSxBkzx3PatLE8+mojv1zbyNrtB3jvgin83vzJlJf6TKbZSOSg6EFE8NSmvZw5e4IfGJQqLy1h6Vum8vaTarj/hW38Ys0Ontu8j0vOnjXUXTOzQeB/AvagfmcTm3Yf5r0Ljs80ISeSmlEVfPwdJ/Opd8+htaOTf/zlOv76Z2tobvPdUWYjiYOiBytXbwfgvIXThrgnw9eCqWP5/NL5nH1yDd/95Xo+9O1f8fRrw2LCXzMbAA6KHqxcvYMzZ09g2viqoe7KsFZVXsofvX0Wd3z6HI60dnDJd37DX9/vowuzkcBBkWHLviO8sGU/H1zko4linbuglpVfPJeP/s5JfPfR9VzkowuzE56DIsPKF5PTTh9cNHWIe3JiGVtVzl//0Vu584pzaGnr5JLv/Ia/8tGF2QnLdz1lWLl6O/OnjOGU2jFD3ZUTRv6X9q743bk88OJ2bn50PT95uoEPvXU6X794ke8gMzuB+IiiG3sOtfLkxj1ccIZPO/VHVXkpHzlrJp9+z1wi4PbfbuITtz7Bc+mXGM1s+HNQdOOHj2+iM+Cit07vubL1aN6UMXz+A/P5g7dN58Wt+1l206+57ObHefjlHZ47ymyY86mnAvYfbuPmX63nA6dP5fTpI3Na8aFQVlLCu0+dzF//0Vu564nXuPWxDXz6B3VMHlPJxYtnsPT0KZx9cs2In6HX7ETjoCjglsfWc7C5nS+dt2CouzIija0q58pzT+Xyd8/hkZcb+ZdnGrjz8Y3c9usNVJaVsHjWBBbOGMfp08cye+IoZteMYvr4Kso8RYjZkHBQ5NlzqJXbHtvAh946nYUj9CFFQy3/gvd7F0zhnXMnsWH3IdbtbGLz3iM8s3kvbR3Hnr5YIhhfXc6EURVMqC7n9+ZPZsaEambWVCc/J1T7SMRskDgo8vzdg2s53NbBFz4wf6i78qZSWV7KW6aN4y3TknDujGDvoVb2Hm5j3+FW9hxuZd/hNvYeamX9rkM817CPzryn+E4eU8HcyaPT1xjmTh7NKbWjOWniKIeIWT84KHL84y/X8cNVr/Hp98xl/tSxQ92dN7USiUljKpk0prLg+o7O4MCRNvYdSYJk35E29hxqpfFgC2u2HaSp5djjWwVMGFVO7dhKpoytSn9W8pnfP/V1U6SbWWFFBYWkC4B/AEqBWyLim3nrK4E7gLOB3cBHI2Jjuu4a4AqgA/hcRKzMalPSXOBuYCLwNPCJiGjt3zB7dtcTr/HNn73MhxfP4C8/dPpg7876qbRE1IyuoGZ0BTD6Deub2zrY1dTCrqbW9GcLjQdbWN+4m/b0UOS7j65n8phK5k0ZzbwpY5hXO4Y5k0czbXwVU8dWMWFUub/vYUYRQSGpFLgJOA9oAJ6UtCIiXsqpdgWwNyLmSVoOXAd8VNJCYDmwCJgB/EJS1xXi7tq8DrghIu6W9I9p298ZiMEWUr+zib954GUefGkH711Qy99dupiSEv9xONFVlZcyq2YUs2pGva68M4J9h9vYebCZWTXV1O9son5nEyue3cqB5vbX1a0oK2HquEomjqpgbFU5Y6vK0lf5636OqypjTGU51RUlVJaVUlWe/Kzs+llWQmcEre2dtLZ30pK+DjS3sf9IGwfS1/6c14Ej7a9b3nOoldISUVYiSktEeWkJZaWiqryUqrISzpg5/mifxuX2rbqrj+WMqSyjqjzpj/8bt94o5ojiHKA+ItYDSLobWAbkBsUy4Ovp+/uAG5X8U2wZcHdEtAAbJNWn7VGoTUlrgPcDH0vr3J62OyhB8YNfb+B///saqstL+fJ5C/jTc0+hosx31oxkJRITR1cwcXTF657GFxE0NrWwec9htu9vYceBZh5Zu5MDR9o43NrBnkOtNLd30tLWQXNbJ62D9N2P8lJRXV5KVXkp1RWlVJeXMmVsJbNqqukM6OjspK0j6OgM2jo6aW7rYP/hNnYe3MmB5jaa24rrVxI2orwkCZyy0iQUu4Kuqqz0aKhUlh8Lv6rykqPlVfnlZaVUputK00ArkSgRx96nARURRM41pggIjpVFV52c9bxhfbLN0e1z2pPSFzq2nP6EpE8lSvtYkvZRXe+Vvj9WRzrWfm5fC/azm/VH+5uWJz1JHgjW1Z8SCZVw9PdWomTfXeu6PvODze3sPNhC48FmTp8+jpMnvfGoeiAVExQzgc05yw3AO7qrExHtkvYDk9Lyx/MJaaA9AAAJ/ElEQVS2nZm+L9TmJGBfRLQXqD/g3n5yDZ9458n8t/fP6/ZcuI1c3T0jHJIjkgvP6P7Llh2dQUt7EhrNbR20tHfS1tFJe0fQnv4xP/qzo5MSibJSHT0qKCspORoGVeUlVJcnodDfW4DbOztpSfvU3NbJkbaOtH/JcnsaMO0dnbR1Jn3r6mNbe3C4tTUZQ8frx9DWkWzbkX8HgQ25a5ct4pPvGvqgKHSMmv9fS3d1uisv9H9DVv03dkq6ErgyXWyStLZQvWL8r75uWJzJwK7B3cWw4zGPfG+28cIwHfPl18Hlfd/85GIqFRMUDcDsnOVZwNZu6jRIKgPGA3t62LZQ+S5ggqSy9Kii0L4AiIibgZuL6P+QklQXEUuGuh/Hk8c88r3ZxgtvzjF3KeY490lgvqS5kipILk6vyKuzgmOhdgnwcEREWr5cUmV6N9N84Inu2ky3eSRtg7TNf+378MzMrL96PKJIrzlcBawkuZX1tohYLelaoC4iVgC3AnemF6v3kPzhJ613L8mF73bgsxHRAVCozXSXfwbcLen/AM+kbZuZ2RBRhC9ODSZJV6anyd40POaR7802XnhzjrmLg8LMzDL5SwNmZpbJQTGIJF0gaa2keklXD3V/BoKk2ZIekbRG0mpJn0/LJ0r6uaRX0581abkkfTv9HTwv6e1DO4K+k1Qq6RlJP02X50palY75nvTGDNKbN+5Jx7xK0pyh7HdfSJog6T5JL6ef9btG+mcs6Yvpf9MvSrpLUtVI/ox7w0ExSHKmPrkQWAhclk5pcqJrB74cEacD7wQ+m47rauChiJgPPJQuQzL++enrSgZxOpbj4PPAmpzlrulm5gN7SaabgZwpbYAb0nonmn8AHoiItwCLScY9Yj9jSTOBzwFLIuIMkptsuqYjGqmfcfGSr9L7NdAv4F3Aypzla4BrhrpfgzDOfyWZs2stMD0tmw6sTd9/F7gsp/7ReifSi+Q7PQ+RTDHzU5Ivh+4CyvI/b5K7+d6Vvi9L62mox9CLsY4DNuT3eSR/xhybXWJi+pn9FPjgSP2Me/vyEcXgKTT1yaBNRzIU0sPts4BVwNSI2AaQ/pySVhspv4dvAf8D6JpMKWu6mddNaQN0TWlzojgFaAS+n55qu0XSaEbwZxwRW4DrgdeAbSSf2VOM3M+4VxwUg6fo6UhORJLGAD8GvhARB7KqFig7oX4Pkv4A2BkRT+UWF6gaRaw7EZQBbwe+ExFnAYc4dpqpkBN9vKTXW5YBc0lmuh5Nckot30j5jHvFQTF4ipn65IQkqZwkJH4YET9Ji3dImp6unw7sTMtHwu/hPcDFkjaSPCvl/SRHGBPSKWvg9eM6Oua8KW1OFA1AQ0SsSpfvIwmOkfwZfwDYEBGNEdEG/AR4NyP3M+4VB8XgKWbqkxOOJJF8W35NRPx9zqrcaVxyp15ZAXwyvTPmncD+rtMXJ4qIuCYiZkXEHJLP8eGI+DjdTzfT3ZQ2J4SI2A5slnRaWrSUZHaFEfsZk5xyeqekUel/411jHpGfca8N9UWSkfwCLgJeAdYBfzHU/RmgMf0uySH288Cz6esikvOzDwGvpj8npvVFcvfXOuAFkrtKhnwc/Rj/7wM/Td+fQjJ3WT3wz0BlWl6VLten608Z6n73YZxnAnXp5/z/gJqR/hmTTCT9MvAicCdQOZI/4968/M1sMzPL5FNPZmaWyUFhZmaZHBRmZpbJQWFmZpkcFGZmlslBYScESSFpXvr+HyV9daj7lEvSD9KnMh7v/f6hpM2SmiSddbz3n/Zho6QPpO//XNItQ9EPGzw9PgrVrDfSby/PAGZExK6c8mdJZiGdGxEb+7OPiPiv/dl+hLkeuCoiCj5bXlIA8yOi/nh0JiL+6njsx44vH1HYYNgAXNa1IOmtQPXQdWdEOxlY3WMts35wUNhguBP4ZM7y5cAduRXSB79cL+k1STvS00nVOev/u6RtkrZK+nTetkdP80iqkfRTSY2S9qbvZ+XU/Q9J/1vSryUdlPSgpMmFOp0+oOcPcpbLJO3qehCPpH+WtF3SfkmPSlrUTTufkvRYXlnuqbPMsedtVyLpLyVtkrRT0h2SxqdtNJE8N+E5SesKbZ/X1tcl3Zu2cVDJQ3qW5Kz/M0lb0nVrJS3N/32ny78vqSFjH/+Uvp+TjvvydKy7JP1FT/204cdBYYPhcWCcpNOVPMDpo8A/5dW5DlhAMlXEPJJpm78GyZMBga+QPOdiPsmEbd0pAb5P8i/rk4AjwI15dT4G/CeSabEr0rYLuYucIyHS5xFExNPp8s/S/kwBngZ+mNGvLN2OvYBPpa/3kUwnMQa4MSJaImJMWmdxRJxa5L4vJpnYcALJfEU3AqTzOl0F/E5EjCUZ+8beDCrD7wKnkcyf9DVJpw9Qu3acOChssHQdVZxHMn/Olq4V6aRrfwp8MSL2RMRB4K9IJtwD+BPg+xHxYkQcAr7e3U4iYndE/DgiDqftfAN4b16170fEKxFxBLiX5A90IT8imSV2VLr8sbSsa1+3RcTBiGhJ+7RY0viefhG5ihh7vo8Dfx8R6yOiieQBWMtzZjTtrcci4v6I6CD5jBan5R0kcxstlFQeERsjosejlCL9r4g4EhHPAc/l7NNOEL6YbYPlTuBRkvn978hbVwuMAp5K/m4CycRypen7GSQPjemyqbudpH/UbwAuIJm4DmCspNL0jyHA9pxNDpP8q/wNIqJe0hrgw5L+jeRf32el+yklCaFL0/53PcBoMslDa4rV09jzzeD1499E8v/tVHLCtxfyfxdVksrSsX+BJAAXSVoJfCkiBmK68KJ+/zZ8+YjCBkVEbCK5qH0Rydz+uXaRnCJaFBET0tf4nFMp23j98w1OytjVl0lOa7wjIsYB56blhR4sU4yu00/LgJdy7hb6WFr2AZJnD8zJ2M8hkjBIKkjTctb1NPZ8W0lOq3U5ieS55Tt6M6hiRMSPIuJ30/0Fx54D/brxANPyt7WRzUFhg+kK4P3p6aOjIqIT+B5wg6QpkDzcXtIH0yr3Ap+StDA9YvifGfsYS/KHd5+kiT3ULcbdwPnAZ8g57ZTupwXYTfJHM+s20OdI/lV+pqQqck6dFTH2fHcBX1TyXJMx6X7viWOP5xwQkk6T9H5JlUAzye+064jsWeAiSRPT0PvCQO7bhj8HhQ2aiFgXEXXdrP4zkrn8H5d0APgFyZEBEfEzkifIPZzWeThjN98iufV2F8lF9Af62edtwG9Jnm52T86qO0hO+2wheaDN4xltvAJcSzKmV4HH8qp0O/YCbuPYabwNJH/E/1uvBlWcSuCbJL/H7SQX7P88XXcnSfhtBB7k9b8XexPw8yjMzCyTjyjMzCyTg8LMzDI5KMzMLJODwszMMjkozMwsk4PCzMwyOSjMzCyTg8LMzDI5KMzMLNP/Bxe2TMOVqM9PAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f4076ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.Insulin.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of Insulin', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 血清胰岛素含量在0~200居多，直觉上看，胰岛素越少，说明有糖尿病的可能性越高，0值应该是缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f63e7978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.BMI.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of BMI', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 体重指数符合正态分布，30左右最多，0 应该是噪声点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAENCAYAAAD0eSVZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcXFWd9/HPr6qr933J3p1OCAmEJSYEEmQRQUdhBMYRBWRAFGTcdUZ9ZtwQd31ePjoizigKIogMLqOCgqLosAmBkAXIAiTdSbpJd9Jbet/rPH/c21BUeqnuru6qrvq+X6965VbdU/f+Tt/Kr06de+655pxDRERSSyDRAYiISPwpuYuIpCAldxGRFKTkLiKSgpTcRURSkJK7iEgKUnIXEUlBSu4iIilIyV1EJAVlJGrH5eXlrrq6OlG7FxGZk55++ulm51zFROUSltyrq6vZvHlzonYvIjInmdn+WMpN2C1jZpVm9lcz22VmO8zso6OUOcfM2s1sm/+4fipBi4hIfMTSch8CPu6c22JmBcDTZvYn59zOqHKPOOfeEv8QRURksiZsuTvnGpxzW/zlTmAXsHimAxMRkamb1GgZM6sG1gKbRll9upltN7P7zeyEMd5/nZltNrPNTU1Nkw5WRERiE3NyN7N84FfAx5xzHVGrtwBLnXNrgO8CvxltG865m51z651z6ysqJjzZKyIiUxRTcjezEF5iv9M59z/R651zHc65Ln/5PiBkZuVxjVRERGIWy2gZA24BdjnnvjVGmQV+OczsNH+7LfEMVEREYhfLaJkzgCuBZ81sm//ap4EqAOfc94FLgPeb2RDQC1zmdP8+EZGEmTC5O+ceBWyCMjcBN8UrKBERmZ6EXaGaLn626cC469+5oWqWIhGRdKKJw0REUpCSu4hIClJyFxFJQUruIiIpSMldRCQFKbmLiKQgJXcRkRSk5C4ikoKU3EVEUpCSu4hIClJyFxFJQUruIiIpSMldRCQFKbmLiKQgJXcRkRSk5C4ikoKU3EVEUpCSu4hIClJyFxFJQUruIiIpSMldRCQFKbmLiKQgJXcRkRSk5C4ikoKU3EVEUpCSu4hIClJyFxFJQUruIiIpSMldRCQFKbmLiKQgJXcRkRSk5C4ikoImTO5mVmlmfzWzXWa2w8w+OkoZM7MbzWyPmT1jZutmJlwREYlFRgxlhoCPO+e2mFkB8LSZ/ck5tzOizPnAsf5jA/Bf/r8iIpIAE7bcnXMNzrkt/nInsAtYHFXsYuB253kCKDazhXGPVkREYjKpPnczqwbWApuiVi0G6iKe13P0F4CIiMySmJO7meUDvwI+5pzriF49ylvcKNu4zsw2m9nmpqamyUUqIiIxiym5m1kIL7Hf6Zz7n1GK1AOVEc+XAAejCznnbnbOrXfOra+oqJhKvCIiEoNYRssYcAuwyzn3rTGK3QNc5Y+a2Qi0O+ca4hiniIhMQiyjZc4ArgSeNbNt/mufBqoAnHPfB+4DLgD2AD3Au+MfqoiIxGrC5O6ce5TR+9Qjyzjgg/EKSkREpkdXqIqIpCAldxGRFKTkLiKSgpTcRURSkJL7LOkbHGZwOJzoMEQkTcQyFFKmKBx2PL63mWdf6uBAazeLi3N479nLyQjoO1VEZpayzAy6Z/tB7n2mgb7BYdZWllDX1sufdx5OdFgikgbUcp8hzjm+/9Be5hVk8aFzVxAwIxCAR15sYsW8fFbMy090iCKSwtRynyEPvdDE7sZOzj62goB514D9/UmLKM/P4hdP19E/NJzgCEUklSm5z5DvP7SXhUXZnFxZ9PJrmRkBLn7NIjr7hthxMHpiTRGR+FFynwHb6o7wRE0r15y57KiTp9XleZTkhth6oC1B0YlIOlBynwF3bTpAQVYGl51WddS6gBlrq0qoaermSM9AAqITkXSgE6rT9LNNB4567YGdjVSW5nLPtqOmtAdgbWUxf9l9mO11R2Y6PBFJU2q5x1lbzwBtPYMsr8gbs0xZfhZLy3LZcuAI3oSaIiLxpeQeZ7XN3QAsKx87uQOsqyyhqaufZ+rbZyMsEUkzSu5xVtvUTU4oyPzC7HHLnbi4iGDA+N0zo3fdiIhMh5J7nNU0d7GsPO/lse1jyckMUl2Wy8MvNM9SZCKSTpTc4yiW/vZIx84r4PlDnTS0985wZCKSbpTc42ikv315eWxTCxw73yv3iFrvIhJnSu5xVNvUTW5mkHmFWTGVX1CYzbyCLB56sWmGIxORdKPkHkex9rePMDPOXlnBoy82MxzWkEgRiR8l9zjp7h+irWeQqtLcSb3v7JUVtPcO8ky9LmgSkfhRco+Txo4+ABYW5UzqfWetKMfMm0VSRCRelNzjpLHdS+7zY+xvH1GSl8nJS4p5WMldROJIyT1OGjv6yMvKoCA7NOn3nrWinO317XT1D81AZCKSjpTc46SxvY+FE1yVOpaNy8sYDjue3q9pgEUkPpTc4yDsHIc7+1hQNLXkvm5pMRkB44maljhHJiLpSsk9Dlq7BhgcdhPOJzOW3MwM1lQWK7mLSNwoucdBgz9SZqotd4CNy0t5pr6dbvW7i0gcKLnHQWN7HwbMK5jcSJlI6ncXkXhSco+DQx19lOdnEQpO/c95ytIS9buLSNwoucdBY8fUT6aOyM3M4OQlRUruIhIXSu7T1D84TGv3wLSTO3hdM8/Ut9MzoH53EZkeJfdpOjRyMnWKI2UibVxexpD63UUkDiZM7mZ2q5kdNrPnxlh/jpm1m9k2/3F9/MNMXoc6+gGmPAwy0ilLSwiq311E4iAjhjK3ATcBt49T5hHn3FviEtEc09zVT0bAKM6d/LQD0fKyvH73TTWtcYhMRNLZhC1359zDgLLNGJq7ByjNy4x5DveJbFxexvb6I+p3F5FpiVef++lmtt3M7jezE8YqZGbXmdlmM9vc1JQasyA2d/VTnj/18e3RNiwrZXDYsWW/5ncXkamLR3LfAix1zq0Bvgv8ZqyCzrmbnXPrnXPrKyoq4rDrxBoOO1q7ByjPz4zbNtdXl6rfXUSmbdrJ3TnX4Zzr8pfvA0JmVj7tyOaAg0d6GQ47yuLYcs/PyuCkxUVsqlVyF5Gpm3ZyN7MFZl6Hs5md5m8zLTJTTXM3QFy7ZcDrd99Wd4TegeG4bldE0kcsQyHvAh4HVplZvZldY2bvM7P3+UUuAZ4zs+3AjcBlzrm0uNvzPj+5l8WxWwZgw3K/3/2AxruLyNRMOBTSOXf5BOtvwhsqmXZqm7vJzAhQkBXLiNLYrffHu2+qaeGMFWnRwyUicaYrVKehtrmb8rxMLE7DIEcUZIc4cXERj+1Ni94tEZkBSu7TUNvcHdeTqZHOXOH1u3f2Dc7I9kUktSm5T9HAUJj6tp64DoOMdMaKcobDjidrdf2YiEyekvsUHWjtIeziP1JmxLqqErJDAR7d0zwj2xeR1KbkPkWvjJSZmeSeHQpyanUpjym5i8gUKLlPUe3IGPe8memWAThzRTkvHOrisD+tsIhIrJTcp6i2pZvi3BC5cR4GGWlkGORje9V6F5HJmbnMlOJqm7qpLsub9nZ+tunAmOvCzpGbGeTRF1t469ol096XiKQPtdyn6EBrD9VluTO6j4AZx1Tk8+ieJtLkol8RiRMl9ykYHA7T0N5LZenMJneAFfPyOdTRz/OHOmd8XyKSOpTcp+DgkV7CjllJ7qvmFwDw4K7DM74vEUkdSu5TcKC1B4DKkplP7oU5IU5aXMSDuw7N+L5EJHUouU9BXWsvAFUz3Oc+4rzj57G17ggtXf2zsj8RmfuU3KfgQGsPoaCxoDB7VvZ33nHzcQ7++nxq3JpQRGaekvsU1LX1sLg4h2AgvrNBjuXExYXML8xS14yIxEzJfQrqWntm5WTqCDPj3OPm8/ALTQwMhWdtvyIydym5T8GBWU7uAOcdN4/ugWHdW1VEYqLkPkkdfYMc6RmkapaT+xkryskJBfnDc42zul8RmZuU3CepbhaHQUbKyQzyhtXzue/ZBgaH1TUjIuNTcp+kl4dBznLLHeDiNYto6xnk0Rc1kZiIjE8Th03Syy330pxZ2+fI5GJD4TA5oSDfefBFGtpfmQb4nRuqZi0WEZkb1HKfpLq2HgqyMyjKCc36vjMCAU5cXMjOgx0aNSMi41Jyn6QDrT1UleZiNjtj3KOtWVLMwHCY3Y0dCdm/iMwNSu6TVNfaM+snUyNVl+dRmJ3B9rojCYtBRJKfkvskhMOOurbeWZtTZjQBM9ZUFvP8oU46egcTFoeIJDcl90k43NnPwFCYypLZO5k6mtOqS3EOntzXmtA4RCR5KblPQl3byEiZxLXcAcrys1g5v4CnalsZCuvEqogcTcl9Eg60JEdyB9i4vJTO/iF2HtSJVRE5mpL7JNS19WAGi4sT2y0DcOz8AkrzMnm8RnPNiMjRlNwn4UBrDwsKs8kOBRMdCgEzNiwrZX9LD8+91J7ocEQkySi5T0J9a29Ch0FGW7+0lOxQgBsffDHRoYhIktH0A+MYuex/xO7GDlbMyz/q9UTJyQxyxopyHth5iGfr2zlpSVGiQxKRJKGWe4wGh8N09g1RkpuZ6FBe5YxjyinKCfHtP7+Q6FBEJIlMmNzN7FYzO2xmz42x3szsRjPbY2bPmNm6+IeZeEd6BnFAaV5yJffsUJDrzl7OX3YfZuuBtkSHIyJJIpaW+23Am8dZfz5wrP+4Dviv6YeVfNp6BgCSruUOcPVrqynNy+Rr9+/GOZfocEQkCUyY3J1zDwPjXQp5MXC78zwBFJvZwngFmCxau73knmwtd4C8rAw++aZVPFnbyq+2vJTocEQkCcSjz30xUBfxvN5/LaW0dg+QETDys5PzHPSl6ys5ZWkJX71vF23+F5GIpK94JPfR5r4dtW/AzK4zs81mtrmpqSkOu549bT0DlORmEkjQVL8TCQSMr7z1RNp7B/n6/bsTHY6IJFg8kns9UBnxfAlwcLSCzrmbnXPrnXPrKyoq4rDr2dPaPZCUXTKRjltQyLVnLePuzXX8ZfehRIcjIgkUj+R+D3CVP2pmI9DunGuIw3aThnOO1u4BSvJm/+5Lk/Uvb1jJ8QsL+fjPt9PQ3pvocEQkQWIZCnkX8DiwyszqzewaM3ufmb3PL3IfUAPsAX4IfGDGok2Q3sFh+ofClCbhSJlo2aEg33vnWvqHwnz0rm0MDWvWSJF0NOHZQefc5ROsd8AH4xZREmrr9m6KUZLk3TIjllfk89W3nsTH7t7G1+7fzefesjrRIYnILEvOoR9JprUneYdBjuUf1i5mW90Rbnm0luqyXK48vTrRIYnILFJyj8HI0MJkvIBpPJ97y2rqWnv4/D07WFySw7nHzU90SCIySzS3TAxauwfICQWTYqrfyQgGjBsvX8vxCwv5wJ1beEJzv4ukDSX3GLR2D1CWP7da7SPysjK47d2nsaQkl/fc9hRP6b6rImlByT0GLd39c6q/PVpFQRY/e+8GFhRlc/WtT/L0fk0wJpLq1Oc+geGwo713kDVJnNxjmV/+nRuquOu9G7n0B4/zrluf5KfXbuA1lcWzEJ2IJIJa7hM40jNA2EFZEif3WM0vzOau6zZSmpfJlbds4tl63Z5PJFWp5T6BV2aDzEpwJNMT2bq/7NRKfvhIDe/4weNcc+YyFhXn8M4NVQmMTkTiTS33CbQk8VS/U1Wcm8k1Zy4nMyPArY/V0tjRl+iQRCTO1HKfwMhUvwVJOtXvVJXmZXLtmcv44SM13PJoLQFgXmH2uO9R615k7lDLfQLehGHJO9XvdJTlZ3HNmcsx4JZHa2nu7E90SCISJ0ruE2jtHkiJk6ljqSjI4pozlxF2jh89WvPyOQYRmduU3McxMtVvKvW3j2Z+YTbXnLmcwWHHbX/bR8/AUKJDEpFpUnIfR1f/EAPD4ZRP7gALirK5cuNS2noG+OkTBzRVsMgcp+Q+jrYUHCkznuryPC5Zt4R9Ld38eutLeLM5i8hcpOQ+jlQcBjmRNZXFnHf8PLbWHWFTreahEZmrlNzH0do9gDH3pvqdrtevmsfK+fn8/tkG6tt6Eh2OiEyBkvs4WrsHKMwJEQqm158pYMY7TqmkICuDnz15gN6B4USHJCKTlF5Za5Ja0mCkzFhyszK4/LQqOnoHufeZg4kOR0QmScl9HG1pnNwBKktzOWfVPLbVHWHHQU0yJjKXKLmPoat/iM7+oZS+gCkWr181j0VF2fxm60u0dOkKVpG5Qsl9DLVN3QCU58/t2SCnKxgwLllfSd9QmBvu3ZnocEQkRkruY6hp7gK8y/PT3YLCbM5ZWcG92w/y2J7mRIcjIjFQch/D3qZujNS4SUc8nL2ygqrSXK7/7XMMDOnqVZFkp+Q+hpqmLkryMslIs2GQYwkFA3zhohPY29TNLY/WJjocEZmAMtcYapq6Kc9Xqz3S64+bx9+tns+ND77IS0d6Ex2OiIxDyX0U4bCjtrmbijQ/mTqa6y9cjcPxJZ1cFUlqSu6jaOzoo3dwmHKdTD3KkpJcPnzusfxhRyP/+/zhRIcjImNQch9FjYZBjuvas5axvDyPG+7ZQd+gpiYQSUZK7qMYGQap5D66rIwgX7j4BPa19HDzwzWJDkdERpFad32Ok5qmbvIygxSm2E2xp+tnmw686vmJi4u48cEXCZhRmpepG2iLJBG13Eext6mLZRV5WAreFDue/v6khQQCxr3bD+rGHiJJRsl9FDVN3Swvz090GEmvKCfEecfN4/lDnexq6Ex0OCISQck9St/gMAfbe1lekZfoUOaE1x5TzvzCLH73zEHdWFskicSU3M3szWb2vJntMbN/H2X91WbWZGbb/Me18Q91duxr6cY5WF6hlnssggHjojWLOdI7yE1/2ZPocETEN2FyN7Mg8D3gfGA1cLmZrR6l6N3Oudf4jx/FOc5ZMzIMcnm5Wu6xWlaex7qqYn74SA17DnclOhwRIbaW+2nAHudcjXNuAPhv4OKZDStxdjd2EjBYMU8t98l484kLyQkFuf63z+nkqkgSiCW5LwbqIp7X+69Fe5uZPWNmvzSzytE2ZGbXmdlmM9vc1NQ0hXBn3q6GDpaV55EdCiY6lDklPyuDT775OP62t4VfPF2f6HBE0l4syX208YDRTbN7gWrn3MnAn4GfjLYh59zNzrn1zrn1FRUVk4t0luxu7OC4hYWJDmNOuuK0KjYsK+WL9+6kvq0n0eGIpLVYkns9ENkSXwK86o7JzrkW59zIPdh+CJwSn/BmV2ffIHWtvaxWcp+SQMD45tvX4JzjE7/YTjis7hmRRIkluT8FHGtmy8wsE7gMuCeygJktjHh6EbArfiHOnucbvbHaxy0oSHAkc1dlaS6fe8tqnqhp5dbHNO+7SKJMmNydc0PAh4A/4iXtnzvndpjZF83sIr/YR8xsh5ltBz4CXD1TAc+kXQ0dAByvlvu0XHpqJW84fj7f+MNuth5oS3Q4ImkppnHuzrn7nHMrnXPHOOe+4r92vXPuHn/5U865E5xza5xzr3fO7Z7JoGfKrsZOCrMzWFiUnehQ5jQz45tvP5n5hdl88M4ttHUPJDokkbSjK1Qj7G7o4PiFhZpTJg6KczP5zyvW0dw1wMfu3saw+t9FZpWmPfSFw47djZ28Y/2oozglBtGzRgKcf9ICfrvtIFfdsok737sxAVGJpCe13H11bT30DAxz/EKdTI2nDcvKOH15GY/tbeHOTfsTHY5I2lBy942cTD1ugU6mxtsFJy1k5fx8rv/tDt2aT2SWKLn7djV40w6snK+We7wFA8Zlp1axcn4B7//pFp7e35rokERSnpK7b1dDB9XleeRkatqBmZAdCnL7e05jfmEW7/7xUy//UhKRmaHkDjjn2FZ3hJMWFyU6lJRWUZDFHddsIDczg6tufZL9Ld2JDkkkZSm5A/VtvRzu7Gf90pJEh5LyKktzueOa0xgcDvNPt2ziUEdfokMSSUkaCgls9vuAT1lamuBIUlvkUMnLT63ilsdqufC7j3LdWcvJzfI+irrJtkh8qOUObN7XRkFWBqs0p8ysqSzN5cqNS2ntHuDWv9XSOzCc6JBEUoqSO15yX7u0hGBAV6bOpmMq8rliQxWH2vu57W+19A8qwYvES9on9/beQV443Kn+9gRZtaCQy0+r5KUjvfzk8X26ybZInKR9ct9yoA3nUHJPoNWLinjH+kr2t/Rw7U8206cWvMi0pX1y37yvlWDAeE1VcaJDSWsnLynmklOW8HhNC/98x9P0DynBi0yHkvu+Nk5YVEhupgYOJdraqhK+9taTeOiFJj5451YGh8OJDklkzkrr5D4wFGZ7/RFOUZdM0rjstCq+ePEJ/HnXIT7631sZUoIXmZK0bq5uPdBG32CY06o1vj2ZXHV6NQNDYb78+10Mh7fwncvWkh3StBAik5HWLfcHdh4iMxjgrJUViQ5Folx71nI+f+Fq/rjjEO/+8VN09g0mOiSROSVtW+7OOf64o5EzVpSRn5W2f4akE3kVa1ZGkLefsoRfbann7779MFdsWMqHzl2RwOhE5o60bbnvbOigvq2XN52wINGhyDjWVpVw1enVtPUM8L2/7uGhF5oSHZLInJC2yf2POw5hBm9YPT/RocgEVs4v4IPnrKAoJ8TVP36Sz/z6Wdp71E0jMp607Y94YEcj65eWUJ6flehQJAZl+Vm873XHcKC1h9v+VssfdzTy4XOP5W2nLDmqW220e7lG0uRkkg7SsuV+oKWH3Y2d6pKZYzIzAlx/4Wru/fCZVJfl8fl7dnD6Vx/ks795lj/tPER7r1rzIiPSsuX+hx0NAEruc9QJi4r45ftfy9YDbdz2t3388ul6fvrEAcxgUVEOWaEAxTmZ5GUFycvMID8rw1vOyiAvK4P+oWGyMjS0UlJb2iX3oeEwdzyxn3VVxVSW5iY6HJmGtVUlrK0qoX9omK0HjrCpppXa5i6e3t/G3qYuuvuHGAq7o973/x54nuqyPFYtKGBtVTGnVpdy4uIiQsG0/CErKSrtkvsfdjRS19rLZy5YnehQJE6yMoJsXF7GxuVlwCt97s45BobCdPUP0T0wTHf/EN39Q7T1DHK4s49Nta3c/1wjANmhACvnF7B6YSEr5xfwnjOXJaw+IvGQVsndOccPHqphWXkeb9QomZRnZmSFgmSFgpSNUaajb5B9zd28eKiLXY0dPFPfTtCMvz5/mDeuns8bV89nYVHOrMYtEg9pldwfr2nh2Zfa+epbT9KNOQSAwuwQJy8p5uQlxYSdo661h10NHexs6OCRF5u5/rc7WFKSw+qFhRy/sJB5BVmYmUbcSNJLq+T+g4dqKM/P5B/XLU50KDJFEw1znI6AGUvL8lhalsebT1zI4c4+dh3sYEdDBw/sPMQDOw9RlBPimIo8skMBzlhRzvzC7BmLR2Q60ia537P9IA+90MS/n3+cJqGSmMwryGbeqmxet2oe7b2D7G7sYO/hLnY3dvKvP98OwPKKPDYsK2X90lJOrS6lsjQHM/0qlMRLi+Re39bDZ379LOuqirlWJ8pkCopyQmxYVsaGZWWEnaOxvY+9TV3UNHXz660vcdeTdQAUZGewtCyPt61bzKnVpRy3oIAMjcKRBEj55D40HOZf7t6Gc/Cdy9bqP5pMW8CMRcU5LCrO4axjKwg7x+HOfva3dLO/pYd9Ld184d6dAORlBlm3tIRTq0s5/Zgy1iwpJjNDn0GZeSmd3HsHhvn4L7bx1L42vn3pGo1rlxkRMGNBYTYLCrPZsMwbl3POqgo2729j875Wnqxt5dt/foFv/QlyQkHWV5dw+jFlvPaYck5cVKgGh8yImJK7mb0Z+A4QBH7knPt61Pos4HbgFKAFuNQ5ty++oU7OoY4+3nv7Zp59qZ3PXHA8b127JJHhSJr53+e92SuPW1DIcQsK6RkYora5m71N3Tzf2MkjLzYDz1OQlcG6pSWcvKSIExcXsWJePpUluZNu3Tvn6B0cpqtvyBvX3+/dgzYjaISCRigYIDPDu3I3J1PnnNLBhMndzILA94A3AvXAU2Z2j3NuZ0Sxa4A259wKM7sM+AZw6UwEPJGG9l5+9Egtdz3pjaq4+cr1GtMuCZebmcEJi4o4YVERAJ19gywqzuHxmha27G/je39tYuRi2mDAmF+QRVl+FsW5IbIygmRmGIPDjr7BYf8RpndwmKbOfvoGhxkYCnP0tbijywwGXpmOITODk5YUUZaXSan/KMvPpDQvizJ/eS7cXzgcdtzxxH6Ghh1D4bD/79HLr1tZQXYoSHYoSE4oSHYoQG5mBgXZGWRlBFLqZHgsR+00YI9zrgbAzP4buBiITO4XAzf4y78EbjIzc87F+nmLWTjs6Bn0rjbs7BvkUEc/L7X1sruxk021Lexs6CBgxkVrFvGhc1dwTEV+vEMQmbaC7BAXrlnEhWsWAV4X4q7GDmqbutnX0k1Dex/P1rezr7nbT0yOoL3SCg8FA2RlBFhRkU9myFvOzgiSmREgOxQgM+i1zoedIxx2DDvH0LCjZ8C7Snfkit3OvkEe29NMS9cAA2PcrzYUNHJCQbIygmSFvP1khQIvPz+lqoT8bG/ensygkREI+L8YAgTMGAqHGQ47BocdQ8NhBsOO4eEwQ2FH/1CY/qEw2w60efU8KimHX369MCeDAb/8q/8dZnA4tlTz48f2jbkuYFCYEyI/y5uPqDA7RH62t5yfnUFBVsRytleuIGp9TmaQYMAImPfwlknIl0YsyX0xUBfxvB7YMFYZ59yQmbUDZUBzPIKM9LtnG/jIXVuPej0rI8DaqmI+cu6xXHLKEvWvy5ySkxlkXVUJ66peuVn7TI7pj/TODVU45+jqH6K1e4CW7gFauwZeXn5sTzN9g8N+IvZ+NXT2D9I/GKZvaJhNNS2MMoXPpGQEjIygEQwECPnLI18SwYCRGQwwryCbrAyve+mVf4MvP9/V0PnydjIC3vuDAe8LMRgIEAoaBgyGHYPDYQaHHYNDYQaGw/QPDtM3FGZpWS5dfUN0+l98hzv7qGnyuro6+4boH5raDdsD5p2bcUDYOf757GP49/OPm94fbQKxJPfRvnKiD2UsZTCz64Dr/KddZvZ8DPuP2QvA3cC/xv6WcmbgCygJqF5zwBWvLCa0XldMXGSqUup4RZh2vT54xOcBAAANCElEQVT1dfjU1N++NJZCsST3eqAy4vkS4OAYZerNLAMoAlqjN+Scuxm4OZbAZoOZbXbOrU90HPGmes0tqtfcMlfqFcsp+aeAY81smZllApcB90SVuQd4l798CfCXmehvFxGR2EzYcvf70D8E/BFvKOStzrkdZvZFYLNz7h7gFuAOM9uD12K/bCaDFhGR8cU0xsk5dx9wX9Rr10cs9wFvj29osyJpuojiTPWaW1SvuWVO1MvUeyIiknp03bOISApKi+RuZm82s+fNbI+Z/fso67PM7G5//SYzq579KCcnhjpdbWZNZrbNf1ybiDgny8xuNbPDZvbcGOvNzG706/2Mma2b7RinIoZ6nWNm7RHH6/rRyiUTM6s0s7+a2S4z22FmHx2lzJw7XjHWK/mPl3MupR94J4H3AsuBTGA7sDqqzAeA7/vLlwF3JzruONTpauCmRMc6hbqdDawDnhtj/QXA/XjXVmwENiU65jjV6xzgd4mOc5J1Wgis85cL8C41if4czrnjFWO9kv54pUPL/eXpE5xzA8DI9AmRLgZ+4i//EjjPknuSiVjqNCc55x5mlGskIlwM3O48TwDFZrZwdqKbuhjqNec45xqcc1v85U5gF97V6pHm3PGKsV5JLx2S+2jTJ0QfqFdNnwCMTJ+QrGKpE8Db/J/CvzSzylHWz0Wx1n0uOt3MtpvZ/WZ2QqKDmQy/K3MtsClq1Zw+XuPUC5L8eKVDco/b9AlJJJZ47wWqnXMnA3/mlV8mc91cO1ax2gIsdc6tAb4L/CbB8cTMzPKBXwEfc851RK8e5S1z4nhNUK+kP17pkNwnM30C402fkEQmrJNzrsU51+8//SHeXPupIJbjOec45zqcc13+8n1AyMzKExzWhMwshJcA73TO/c8oRebk8ZqoXnPheKVDck/F6RMmrFNUv+ZFeP2GqeAe4Cp/FMZGoN0515DooKbLzBaMnOcxs9Pw/m+2JDaq8fnx3gLscs59a4xic+54xVKvuXC8kn8W/mlyKTh9Qox1+oiZXQQM4dXp6oQFPAlmdhfeSIRyM6sHPg+EAJxz38e7UvoCYA/QA7w7MZFOTgz1ugR4v5kNAb3AZUnewAA4A7gSeNbMtvmvfRqogjl9vGKpV9IfL12hKiKSgtKhW0ZEJO0ouYuIpCAldxGRFKTkLiKSgpTcRURSkJL7LDMzZ2Yr/OXvm9nnEh1TJDO7zcy+nID9vtXM6sysy8zWTnEb95vZuyYuCWa2z8zeMJX9JKPI42ZmZ1mcbz4/l6R7/UcouY/B/88/EH3VmT+9p7M4TAvsnHufc+5L091Oivgm8CHnXL5zbmv0Sv9v3u0n/xYze9DMLo0s45w73zk349MsxOuLwbxpmYf9OnX4n623THe7zrlHnHOrprudqTCzG8xs0K/TyOP/zPA+X24wQWLrn0yU3MdXC1w+8sTMTgJyEhdOSlsK7JigzBrnXD6wCrgNuMnMPj/Tgc2wx/06FeNdTPdzMytNVDD+9BvTdbf/JT3y+L9x2KZMkpL7+O4Arop4/i7g9sgC5t3o45tmdsDMDvldLTkR6z9pZg1mdtDM3hP13sif0iVm9jvzbrDR5i8viSj7v2b2JTN7zMw6zeyBseayMO8mA2+JeJ5hZs3m3yjBzH5hZo3m3WzgYRtjRju/Zflo1GuR3Urj1j3qfQEz+6yZ7TfvphW3m1mRv40uvCttt5vZ3tHeH8k51+ycuwN4P/ApMyuL+Btd6y8fY2Z/8Vv5zWZ2p5kVR23qVDPb6f+9f2xm2RHxvsVvSR8xs7+Z2cn+63fgXal4b2Sr1Mw2+uWOmDdT4DlRf8ca/7jVmtkVo9QpDNyK13hYPl4M/rq1ZrbF3+bdQGTs55h3FezI83VmttUv+wvzbkzz5ciyZvZvZtYI/DiGfS8ys1/5n9VaM/vIRMfMf9+rfvGY18r/qb9c7X+23uV/nprN7DMRZYNm9mkz2+vX42nzbqrxsF9ku388Lh2l/sf7n40j5t1846KIdbeZ2ffM7Pf+djeZ2TGx1CfZKbmP7wmg0P9wBIFLgZ9GlfkGsBJ4DbACbzrT68G7WxLwCeCNwLHAeD/lA3j/sZbiJY9e4KaoMu/Eu3x7Ht5NOj4xxrbuIuIXB/AmoHlkjmq8mycc629nC3DnOHGNZ8y6j+Jq//F6vOSVj3czkX6/5Qpey3wy/7F+izeFxmmjrDPga8Ai4Hi8yatuiCpzBd7f5hi/Hp8FLxniJdp/xpv6+QfAPWaW5Zy7EjgAXDjSKjWzxcDvgS8DpXjH5VdmVmFmecCNwPnOuQLgtcA2opjXYr4W6AJeHC8G8+YT+g1e46MU+AXwttH+QH7ZX+P90inF+2y8NarYAn/dUuC6CfYdwJtxdDve8T4P+JiZvWm0/U/BmXi/zM4Drjez4/3X/xXvM30BUAi8B+hxzp3tr1/jH4+7Izdm3gRg9wIP4H3ePwzcaWaR3TaXA18ASvCmSfhKnOqSWIm+W0iyPoB9eMn4s3hJ4s3An/CSiQOq8RJIN3BMxPtOB2r95VuBr0esW+m/d4X//Dbgy2Ps/zVAW8Tz/wU+G/H8A8AfxnjvCqATyPWf3wlcP0bZYj+mouiY8JLxo1Hlnb/9ces+yn4eBD4Q8XwVMAhkRG53nOMx6nqgEbgi4m907Rjv/wdga9TxfV/E8wuAvf7yfwFfinr/88DrIj8bEev+Dbgjqvwf8X7p5QFH8JJvTlSZq/Hm/jkCNOM1Jt4wUQx4d3U6iD99iL/ubxHH7Ryg3l8+G3gpquyjUWUHgOyI9ePtewNwIGrdp4Af+8s3+Ns7EvFYNMbf7Qbgp/5ytX+Ml0SsfxJvzpaR/V8cy2cjqv5n+Z+RQMT6u4AbIj7vP4r6HOyONU8k8yPlJw6LgzuAh4FlRHXJABVALvC0vXLjJsPrYgCv1fh0RPn9Y+3EzHKBb+N9iZT4LxeYWdA5N+w/b4x4Sw9e6/cozrk9ZrYLuNDM7sWbFXKtv58gXsvk7X78Yf9t5Xg3KYnVRHWPtohX138/3hflfLzkM2l+q6yCUaZnNrN5eC3ms/BulRYA2qKKRd5EYr8fI3gt2HeZ2Ycj1mdGrI+2FHi7mV0Y8VoI+Ktzrtu8E7+fAG4xs8eAjzvndvvlnnDOnTnGNseKwQEvOT8bRcQ/mkWjlK2LKtPknOuLcd/DwCIzOxKxLgg8EvH85865fxojnomM9RmvxLu15GQtAuqc1+01Yj+vvmFITP+v5hp1y0zAObcf78TqBUD0vM7NeN0nJzjniv1HkXulm6GBV89lXTXOrj6O15rd4JwrxGtxweg3O4jFSNfMxcBO59we//V3+q+9AW/e+upx9tONl8C9AmYLItZNVPdoB/GSxogqvFbroclUKsrF/jaeHGXd1/CS4Mn+3/OfOLqO0cdmZJ7xOuArEfUqds7lOufu8tdHz7ZXh9dyjyyf55z7OoBz7o/OuTfi3ZtzN978+hMZL4YGYLHZq24FOdZna7Sy0XflGq0+Y+27Du/XWeS6AufcBTHU6VWfJ7zuoFjV4XWfTdZBoNLvThpRxRQbFHOJkntsrgHOdc51R77otwZ+CHzbbyliZosj+h9/DlxtZqv9lvl4IzsK8JLlEfNGS0x3FMh/A3+Hd9LxZ1H76cebezoX+Oo429gOnGBmrzHvZOMNIytiqHu0u4B/MW8O+nx/v3c777aGk2Jmpf5Jye8B33DOjTaPdgFe//URv0/8k6OU+aCZLfH/3p8GRvprfwi8z8w2mCfPzP7ezAr89YfwT3r6for3K+lN/om/bP+k3hIzm29mF/l97/1+TMNMbLwYHsf7UvuIeSfL/5HRzzvglx0GPuSXvXicsrHs+0mgw7wTsDl+fU80s1NjqNM24DIzC5nZerxpc2P1I+BLZnasH9PJ5p9I5+jjEWkT3pfK//H3ew5wId7/j5Sm5B4D59xe59zmMVb/G95JmCfMrAPvlnar/PfdD/wH8Be/zF/G2c1/4I2UGOl7/cM0Y27A+4/9Wl5JWuB1Le3Ha7ns9Pc11jZeAL6IV6cX8fpqI41Z91HcyitdXLVAH97JrcnYbt7Imj14Jx//xTk31gncLwDr8Lqafs/Rv7rA+9J7AKjxH18G8I/1e/FOaLf5+7s64n1fAz7rj774hHOuDu9XxKeBJrxW5ifx/n8F8H6VHcTrPnod3vmScY0Xg/Nuiv6P/vM2vBP9o9Uvsuw1eP3f/wT8Du+LZir7HsZLjq/BO47NeIm3aKI6AZ/Da3234R2fn41f/FW+hddYegDowBs2OjIy6wbgJ/7xeEdUXQbwuiXP92P9T+CqiG6xlKX53EXSjJltAr7vnPtxomORmaOWu0iKM7PXmXdbuAzzpmc4mWn+MpTkp9EyIqlvFV6XRj7eiJNLXJLfx1SmT90yIiIpSN0yIiIpSMldRCQFKbmLiKQgJXcRkRSk5C4ikoKU3EVEUtD/B9u4zNnVRwbDAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe5287140f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sns.distplot(train.DiabetesPedigreeFunction.values, bins=30, kde=True)\n",
    "plt.xlabel('Median value of DiabetesPedigreeFunction', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 糖尿病家族史，这应该是一个进行过特征编码的类，在0.3左右人数最多"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 去掉噪声点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 393 entries, 3 to 765\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 393 non-null int64\n",
      "Glucose                     393 non-null int64\n",
      "BloodPressure               393 non-null int64\n",
      "SkinThickness               393 non-null int64\n",
      "Insulin                     393 non-null int64\n",
      "BMI                         393 non-null float64\n",
      "DiabetesPedigreeFunction    393 non-null float64\n",
      "Age                         393 non-null int64\n",
      "Outcome                     393 non-null int64\n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 30.7 KB\n"
     ]
    }
   ],
   "source": [
    "train1 = train\n",
    "train1  = train1[train1.BMI > 0]\n",
    "train1  = train1[train1.BloodPressure > 0]\n",
    "train1  = train1[train1.SkinThickness > 0]\n",
    "train1  = train1[train1.Insulin > 0]\n",
    "train1.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 感觉去掉的有点多。。。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 换一种方法，只去掉比较少的缺失值，比如血压，其他的尝试按照均值填充"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 724 entries, 0 to 767\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 724 non-null int64\n",
      "Glucose                     724 non-null int64\n",
      "BloodPressure               724 non-null int64\n",
      "SkinThickness               724 non-null int64\n",
      "Insulin                     724 non-null int64\n",
      "BMI                         724 non-null float64\n",
      "DiabetesPedigreeFunction    724 non-null float64\n",
      "Age                         724 non-null int64\n",
      "Outcome                     724 non-null int64\n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 56.6 KB\n"
     ]
    }
   ],
   "source": [
    "train1 = train\n",
    "train1  = train1[train1.BloodPressure > 0]\n",
    "train1  = train1[train1.BMI > 0]\n",
    "train1  = train1[train1.Glucose > 0]\n",
    "train1.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 血压取中位数72，皮肤厚度取23，胰岛素取127"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0      72\n",
      "1      66\n",
      "2      64\n",
      "3      66\n",
      "4      40\n",
      "5      74\n",
      "6      50\n",
      "8      70\n",
      "10     92\n",
      "11     74\n",
      "12     80\n",
      "13     60\n",
      "14     72\n",
      "16     84\n",
      "17     74\n",
      "18     30\n",
      "19     70\n",
      "20     88\n",
      "21     84\n",
      "22     90\n",
      "23     80\n",
      "24     94\n",
      "25     70\n",
      "26     76\n",
      "27     66\n",
      "28     82\n",
      "29     92\n",
      "30     75\n",
      "31     76\n",
      "32     58\n",
      "       ..\n",
      "738    60\n",
      "739    74\n",
      "740    80\n",
      "741    44\n",
      "742    58\n",
      "743    94\n",
      "744    88\n",
      "745    84\n",
      "746    94\n",
      "747    74\n",
      "748    70\n",
      "749    62\n",
      "750    70\n",
      "751    78\n",
      "752    62\n",
      "753    88\n",
      "754    78\n",
      "755    88\n",
      "756    90\n",
      "757    72\n",
      "758    76\n",
      "759    92\n",
      "760    58\n",
      "761    74\n",
      "762    62\n",
      "763    76\n",
      "764    70\n",
      "765    72\n",
      "766    60\n",
      "767    70\n",
      "Name: BloodPressure, Length: 724, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "train = train1\n",
    "train.replace({'BloodPressure':'0'},72)\n",
    "train.replace({'SkinThickness':'0'},23)\n",
    "train.replace({'Insulin':'0'},127)\n",
    "print(train.BloodPressure)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 热度图分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Wvdj4+NJOHaCQwO/InZP4tUa/aveQ8Gez2KM4dzmHUT1/xzi0r9S3ft4rnTf53nBtSvRse/TuNxuFvw2hz+GjuORHo+ze/1OVs1ZQZ/R71Li9ps56jkOHAqL4qMug6j+cE26fvQSB7ZfuHLl8J5fsndzxpzIGLt34pVOUGeqc5vmZvjvsxzl6mZ6m9WBuQ5X04HxLKsDfAjk8CzqY62dbIxpBnwEHAL+AYpaa9tdpgMTDkwEgoBtJM6b6X+FDkxR4FvgFhIrM12ttctSxL8CdPHkdhJoD5T25JZAYoemq7V25aVeC6c6MFlJRnVgsoOM7sBkB+ndgcluMroDkx2kdwcmu0nvDkx2lJEdmOwgIzsw2YU6MJlDfwfmOqTsvHiWhQB3pVg2D6iSxi7mW2vvMImzFYeROJcGa23/FNtfvL80/5jFxblYa8cB4zz3I4FUf8EwRfwXwBcpQnYBM9N6LhERERHJBvR3YCQDPOOZ2L8JyEfiVclEREREROQSVIFxkLX2M+Azp/MQERERES+UoAqMiIiIiIiIo1SBERERERHxQtbGO51ChlAFRkREREREsg1VYEREREREvJGuQiYiIiIiIuIsVWBERERERLyRrkImIiIiIiLiLFVgRERERES8kZfOgVEHRkRERETEGyXoMsoiIiIiIiKOUgVGRERERMQbeekQMlVgREREREQk21AFRkRERETEG+kyyiIiIiIiIs5SBUZERERExBtpDoyIiIiIiIizVIEREREREfFGmgMjIiIiIiLiLFVgRERERES8kSowIiIiIiIizlIFRiSdLNvwk9MpOKp9pR5Op+Coc/ExTqfgqK55KjqdguPW5j7pdAqO2hUT7XQKjvvwRD6nU3BU99h4p1OQFKz1zv8TdWAkXVQt39HpFBz1X++8iIiIiGQWdWBERERERLyR5sCIiIiIiIg4SxUYERERERFvZFWBERERERERcZQqMCIiIiIi3khzYERERERERJylCoyIiIiIiDfy0jkw6sCIiIiIiHgjDSETERERERFxliowIiIiIiLeyEuHkKkCIyIiIiIi2YYqMCIiIiIi3khzYERERERERJylCoyIiIiIiDdSBUZERERERMRZqsCIiIiIiHgjXYVMRERERETEWarAiIiIiIh4I82BERERERERcZYqMCIiIiIi3khzYERERERERJylCoxkeVVr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EckwlIEREREREfFAFs8cA6MGjIiIiIiIB4r30F+yVBcyERERERHJMJSBERERERHxQPEe2oVMGRgREREREckwlIEREREREfFAnjqIXxkYERERERHJMJSBERERERHxQPohSxERERERETdTBkZERERExANpDIyIiIiIiIibKQMjIiIiIuKBNAZGRERERETEzZSBERERERHxQJ6agVEDRlJF1N8n3B2CW23OfsbdIbhVp3yV3B2C252L88yBknJzZmwc7u4Q3Cq4Qhd3h+BWf8ddcHcIblXbx8/dIcgdQg0YERG5ZS0e7OHuENzuTm+8iMjtR08hExERERERcTNlYEREREREPFC8ZyZglIEREREREZGMQxkYEREREREPFK8xMCIiIiIiIu6lDIyIiIiIiAey7g4gjagBIyIiIiLigTz1hyzVhUxERERERDIMZWBERERERDxQvNEgfhEREREREbdSBkZERERExAN56iB+ZWBERERERCTDUAZGRERERMQD6SlkIiIiIiIibqYMjIiIiIiIB4r3zIeQKQMjIiIiIiIZhzIwIiIiIiIeKB7PTMEoAyMiIiIiImnGGPOoMWa3MWafMab/v5RrY4yxxpjK/7Y9NWBERERERDyQTYfX9RhjvIARQCOgNPA/Y0zpFMrlAF4C/rjeNtWAERERERGRtFIV2GetPWCtvQj8BLRIody7wEfA+ettUA0YEREREREPFG/S/nUDAoDDV0wfSZyXxBhTEShsrZ19IxtUA0ZuOw3qB7Nt6xJ2/Lmcvn27J1vu4+PD9xNHsuPP5SxfNpN77ikEQN68uZk/fzKxx3bx2afvJpXPmjUL038dz9Ytv7Np40IGv3vNrpe3pQpBFfl08Qg+XzqKFt1aJVvepEtzhi38ko/mfcbrP7xD/oACANxTuhjv/voBQ0O+4KN5n1Gjaa30Dj3VlAqqwIBFnzBwyWc80q15suVBzzbm1ZChvPLbh3Sb9Dp5AvInLWva/wn6zf+YfvM/JrBpjfQMO034B5enxbKPabliGGVfaHbNckWaVOGp8O/JV75YOkaXNioFVWL076MZs2wMbbu3Tba8bNWyfDHnC2YdmEWtxq7f86cHPM3IkJGMDBlJ7Wa10yvkdPX6e59Qu0l7Wnbo6u5Q0ky14Cr8uGwCk1dMpMML/0u2vEK18nw772uWHgwhuInr57zsUAjjF4xm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UAZGRERERMQDxet3YERERERERNxLGRgREREREQ+kp5CJiIiIiIi4mTIwIiIiIiIeSBkYERERERERN1MGRkRERETEA+l3YERERERERNxMGRgREREREQ/kqb8DowaMiIiIiIgH0iB+ERERERERN1MGRkRERETEA2kQv4iIiIiIiJspAyMiIiIi4oHiPTQHowaMpIpMDi93h+BW+y/GujsEt/ol9oC7Q3C74IJl3R2CWzmshz7qRm7Kki1j3B2C2+UsXMfdIbjNFudJd4cgdwg1YERERFJBcIUu7g7BrdR4Ebn96ClkIiIiIiIibqYMjIiIiIiIB/LMETDKwIiIiIiISAaiDIyIiIiIiAfSGBgRERERERE3UwZGRERERMQDxXvoE+6VgRERERERkQxDGRgREREREQ8U76HPIVMGRkREREREMgxlYEREREREPJBn5l+UgRERERERkQxEGRgREREREQ+k34ERERERERFxM2VgREREREQ8kJ5CJiIiIiIi4mbKwIiIiIiIeCDPzL+oASMiIiIi4pE0iF9ERERERMTNlIEREREREfFAGsQvIiIiIiLiZsrAiIiIiIh4IM/MvygDI7eh+vWD2LR5EVu3LaFPn27Jlvv4+DDhu+Fs3baEJUunU6RIIQDq1n2IFStnsXbtPFasnEVQUI2kdby9vfly+Hts3rKYjZsW0aLFo+lWn1tVo05Vflk+iV9X/UinHk8mW16xegW+XzCWNYd/55EmwcmW35U9G3M3TqPfkJ7pEO3NK1nyPtavW5D0On5sFy+92MWlTFDtGsQe3ZlU5vXXbr4ur/brwa4dK/hz+zIa1A9Kmr9vzxo2bVzI+nULWLN67i3XJy1UCa7MuCVjmLB8HO27P55seblqZRk1dzjzQ+fycOOHXJY9N/BZxiwczdjF3/DC28n/njKKysGVGLtkDOOWf0u7a+yDEXOH81vonGT7oMvAZxm98GvGLB5N9wy6D6oFV+HHZROYvGIiHV74X7LlFaqV59t5X7P0YAjBTWq7LFt2KITxC0YzfsFoPhw3OL1CTlevv/cJtZu0p2WHru4OJVXVrx/Eli2L2b59KX37pnw+nDhxONu3L2XZMtfz4cqVs1m3bj4rV84mKKhm0jozZkzgjz9+Y8OGEL74YggOR8a4FKwcXIkxS75h3PKxPN69bbLlZauVZfjcL5kbOpuHrjoG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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4f414a0b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cols=train.columns \n",
    "# Calculates pearson co-efficient for all combinations，通常认为相关系数大于0.5的为强相关\n",
    "data_corr = train.corr().abs()\n",
    "plt.subplots(figsize=(13, 9))\n",
    "sns.heatmap(data_corr,annot=True)\n",
    "\n",
    "# Mask unimportant features\n",
    "sns.heatmap(data_corr, mask=data_corr < 1, cbar=False)\n",
    "\n",
    "plt.savefig('pima.png' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 从图中数据来看，只有Glu与y之间有较强的相关性，其实我试验过不做损失值的中值化处理，结果也差不多，也是Glu相关性较强"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "y_train = train['Outcome']\n",
    "train = train.drop([ \"Outcome\"], axis=1)\n",
    "X_train = np.array(train)\n",
    "ss_X = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## default Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logloss of each fold is:  [0.484467   0.50348613 0.4822051  0.44119703 0.46551112]\n",
      "cv logloss is: 0.47537327428998566\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "lr= LogisticRegression()\n",
    "# 交叉验证用于评估模型性能和进行参数调优（模型选择）\n",
    "#分类任务中交叉验证缺省是采用StratifiedKFold\n",
    "from sklearn.cross_validation import cross_val_score\n",
    "loss = cross_val_score(lr, X_train, y_train, cv=5, scoring='neg_log_loss')\n",
    "print('logloss of each fold is: ',-loss)\n",
    "print('cv logloss is:', -loss.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 正则化的 Logistic Regression及参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "#需要调优的参数\n",
    "# 请尝试将L1正则和L2正则分开，并配合合适的优化求解算法（slover）\n",
    "#tuned_parameters = {'penalty':['l1','l2'],\n",
    "#                   'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "#                   }\n",
    "penaltys = ['l1','l2']\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.00713778, 0.00382342, 0.00548449, 0.00457034, 0.00662317,\n",
       "        0.00470076, 0.00384765, 0.00470276, 0.00369649, 0.00716443,\n",
       "        0.00455446, 0.00497265, 0.00421934, 0.00346417]),\n",
       " 'mean_score_time': array([0.00358763, 0.00299788, 0.00324345, 0.00307994, 0.00407863,\n",
       "        0.00320511, 0.0040801 , 0.0028038 , 0.00255094, 0.00409932,\n",
       "        0.00220857, 0.00331721, 0.00314975, 0.00219073]),\n",
       " 'mean_test_score': array([-0.69314718, -0.63342842, -0.64526412, -0.51760843, -0.47975383,\n",
       "        -0.4760541 , -0.47561595, -0.4753869 , -0.47570068, -0.47568531,\n",
       "        -0.47572283, -0.47572122, -0.47572241, -0.47572488]),\n",
       " 'mean_train_score': array([-0.69314718, -0.63249655, -0.64446658, -0.51293555, -0.4704359 ,\n",
       "        -0.46531473, -0.46228845, -0.46218579, -0.46213653, -0.46213541,\n",
       "        -0.46213489, -0.46213487, -0.46213487, -0.46213487]),\n",
       " 'param_C': masked_array(data=[0.001, 0.001, 0.01, 0.01, 0.1, 0.1, 1, 1, 10, 10, 100,\n",
       "                    100, 1000, 1000],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_penalty': masked_array(data=['l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1',\n",
       "                    'l2', 'l1', 'l2', 'l1', 'l2'],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.001, 'penalty': 'l1'},\n",
       "  {'C': 0.001, 'penalty': 'l2'},\n",
       "  {'C': 0.01, 'penalty': 'l1'},\n",
       "  {'C': 0.01, 'penalty': 'l2'},\n",
       "  {'C': 0.1, 'penalty': 'l1'},\n",
       "  {'C': 0.1, 'penalty': 'l2'},\n",
       "  {'C': 1, 'penalty': 'l1'},\n",
       "  {'C': 1, 'penalty': 'l2'},\n",
       "  {'C': 10, 'penalty': 'l1'},\n",
       "  {'C': 10, 'penalty': 'l2'},\n",
       "  {'C': 100, 'penalty': 'l1'},\n",
       "  {'C': 100, 'penalty': 'l2'},\n",
       "  {'C': 1000, 'penalty': 'l1'},\n",
       "  {'C': 1000, 'penalty': 'l2'}],\n",
       " 'rank_test_score': array([14, 12, 13, 11, 10,  9,  2,  1,  4,  3,  7,  5,  6,  8],\n",
       "       dtype=int32),\n",
       " 'split0_test_score': array([-0.69314718, -0.63163771, -0.64512139, -0.51570925, -0.48758638,\n",
       "        -0.48164516, -0.48466686, -0.484467  , -0.48528845, -0.4852822 ,\n",
       "        -0.48537315, -0.48537255, -0.48537943, -0.48538168]),\n",
       " 'split0_train_score': array([-0.69314718, -0.63320136, -0.64270464, -0.51207085, -0.46760434,\n",
       "        -0.4625033 , -0.45925162, -0.45915223, -0.45909843, -0.45909732,\n",
       "        -0.45909674, -0.45909673, -0.45909672, -0.45909672]),\n",
       " 'split1_test_score': array([-0.69314718, -0.6364943 , -0.64936905, -0.53311013, -0.50865494,\n",
       "        -0.50201708, -0.50463861, -0.50348613, -0.5041331 , -0.50402636,\n",
       "        -0.50410295, -0.50408678, -0.50409004, -0.50409289]),\n",
       " 'split1_train_score': array([-0.69314718, -0.63091563, -0.63369757, -0.50816519, -0.46465629,\n",
       "        -0.45999872, -0.45697747, -0.456874  , -0.45682513, -0.45682392,\n",
       "        -0.4568234 , -0.45682338, -0.45682338, -0.45682338]),\n",
       " 'split2_test_score': array([-0.69314718, -0.63551599, -0.64449874, -0.52255327, -0.47950338,\n",
       "        -0.48219948, -0.48137731, -0.4822051 , -0.48251656, -0.48260695,\n",
       "        -0.48264554, -0.48265377, -0.48265475, -0.48265852]),\n",
       " 'split2_train_score': array([-0.69314718, -0.63145212, -0.64798161, -0.51112437, -0.46855893,\n",
       "        -0.4627679 , -0.45962713, -0.45953245, -0.45948097, -0.45947997,\n",
       "        -0.45947942, -0.45947941, -0.4594794 , -0.4594794 ]),\n",
       " 'split3_test_score': array([-0.69314718, -0.62859581, -0.64298424, -0.49808309, -0.44955418,\n",
       "        -0.44486823, -0.44085004, -0.44119703, -0.44106184, -0.44110411,\n",
       "        -0.4410933 , -0.44109946, -0.44109375, -0.44109905]),\n",
       " 'split3_train_score': array([-0.69314718, -0.63512311, -0.6511621 , -0.5195317 , -0.47918372,\n",
       "        -0.47320442, -0.47030267, -0.47019111, -0.47014427, -0.47014308,\n",
       "        -0.47014258, -0.47014257, -0.47014257, -0.47014257]),\n",
       " 'split4_test_score': array([-0.69314718, -0.63490848, -0.64434083, -0.51859321, -0.47342662,\n",
       "        -0.46949533, -0.46648398, -0.46551112, -0.46543265, -0.46533553,\n",
       "        -0.4653275 , -0.46532183, -0.46532234, -0.4653205 ]),\n",
       " 'split4_train_score': array([-0.69314718, -0.63179055, -0.64678699, -0.51378564, -0.47217624,\n",
       "        -0.46809929, -0.46528337, -0.46517913, -0.46513385, -0.46513276,\n",
       "        -0.46513229, -0.46513227, -0.46513227, -0.46513226]),\n",
       " 'std_fit_time': array([0.00756913, 0.0003054 , 0.00210164, 0.00045567, 0.00492284,\n",
       "        0.00091343, 0.00075866, 0.00100033, 0.00057872, 0.00282952,\n",
       "        0.00215092, 0.00132804, 0.00042811, 0.0008376 ]),\n",
       " 'std_score_time': array([0.00077458, 0.00037953, 0.00058107, 0.00025035, 0.00146543,\n",
       "        0.00038651, 0.00179981, 0.00101241, 0.00074594, 0.0016423 ,\n",
       "        0.00055531, 0.00087441, 0.00043404, 0.00066924]),\n",
       " 'std_test_score': array([0.        , 0.00291728, 0.00216949, 0.01141456, 0.01924066,\n",
       "        0.01876598, 0.02122272, 0.02091567, 0.02123416, 0.02120644,\n",
       "        0.02124202, 0.02123672, 0.0212401 , 0.02123976]),\n",
       " 'std_train_score': array([0.        , 0.00151553, 0.00602737, 0.00376872, 0.00498994,\n",
       "        0.00474661, 0.00485199, 0.00484774, 0.00484976, 0.00484975,\n",
       "        0.00484977, 0.00484977, 0.00484977, 0.00484977])}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4753868960558796\n",
      "{'C': 1, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "# examine the best model\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 进一步扩大范围寻找最优化参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4753571989783404\n",
      "{'C': 0.9, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "Cs = [0.9, 1,1.5]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4752803118128021\n",
      "{'C': 0.7, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "Cs = [0.7, 0.8,0.9]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4750354795067979\n",
      "{'C': 0.3, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "Cs = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.71]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4750237696215002\n",
      "{'C': 0.26, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "Cs = [0.18,0.19,0.2,0.21,0.22,0.23,0.24,0.25,0.26,0.27,0.28,0.29]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 最后找到最优参数0.26，L2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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08vAx8xslJnVESSjD5cayMzOM7NFZrZo7dq1parVjK7cvr7QVVddxdSpUznssMMYPnx4jLMUEWmtYqe8zOxBYOcim64os4vzgd+5+xtmli109/fM7F8JrsGkgT8RHLUU5e43AzcDTJ48uSbP58R1+/rHH3887/HJJ5+c95XAGeeee252/fbbby85FxGRjqhYQnH3o0ptM7O3zWyEu68ysxHAmiLVDgAOMbPzgUFAg5ltcvdL3f03wG/Cvs4DUhV4CqXV4LUTEZHu1l2nvOYDZ4frZwP3FFZw9zPcfTd3HwVcDNzm7pcCmNlO4XIIwZGi11kDAAALGElEQVTM7GpMWkRESuuuhHItcLSZLQeODh9jZpPNrJzk8AMzex5YCFzr7i9VbqoiIlKObnnbsLuvA44sUr4IOLdI+RxgTuTx6RWcnoiIdIJuvSIiIrFQQumEc+47h3PuO6e7pyEiUlOUUGpA5vb1zzzzDAcccADjx49n77335u67725VN47b1wMsXryY++67L5b5i4iAbg5ZUwYMGMBtt93G2LFjeeutt9h333055phj2H777bN1yr19fXsWL17MsmXLmDJlSlzTF5E+TkcoNWTcuHGMHTsWgF122YWddtqJjny6f/ny5RxzzDHsu+++HHroobz0UvDmt7vuuou99tqLiRMncvjhh7Nlyxauvvpq7rjjjk4d3YiIFKMjlIjrnrqOF999sVX55vD29QPC29dn6pRzHeVjO3yMr32y1H0vS3vqqadoampizJgxZbc577zzmD17NmPGjGHhwoVceOGFPPDAA8yYMYNHHnmE4cOHs379evr378+VV17JsmXLuOGGGzo8NxGRYpRQatCqVas488wzmTt3LolEeQeR69ev54knnsi71UpLSwsABx10EGeddRannHIKJ510UkXmLCKihBJR6kjihYLb12eOTG6dcmvsc9i4cSOf/exnueaaa9h///3LbufuDB06tOg1lVtuuYUnn3ySe++9l4kTJ/Lss8/GOWUREUDXUGpKU1MTU6dOzR5NdMSQIUMYMWJE9it80+k0S5YsAeCVV15h//33Z+bMmQwZMoSVK1cyePBg3n///difg4j0XUooNeRnP/sZCxYsYM6cOdm3A3fkXVx33XUXN954IxMnTmT8+PHce++9AHz5y19mwoQJTJgwgaOOOoq99tqLI444giVL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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4e31c4898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(Cs)\n",
    "number_penaltys = len(penaltys)\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(penaltys):\n",
    "    #pyplot.plot(log(Cs), test_scores[i], label= 'penalty:'   + str(value))\n",
    "    pyplot.errorbar(x_axis, test_scores[:,i], yerr=test_stds[:,i] ,label = penaltys[i] +' Test')\n",
    "    pyplot.errorbar(x_axis, train_scores[:,i], yerr=train_stds[:,i] ,label = penaltys[i] +' Train')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'neg-logloss' )\n",
    "pyplot.savefig('LogisticGridSearchCV_C.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 从结果来看，是一条直线，C在这里起到的效果十分有限？？？随着C增大，效果只有有限的提升"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 用LogisticRegressionCV实现正则化的 Logistic Regression\n",
    "## L1正则"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[1, 10, 100, 1000], class_weight='balanced', cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=1, penalty='l1',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "\n",
    "Cs = [1, 10,100,1000]\n",
    "\n",
    "# 大量样本（6W+）、高维度（93），L1正则 --> 可选用saga优化求解器(0.19版本新功能)\n",
    "# LogisticRegressionCV比GridSearchCV快\n",
    "lrcv_L1 = LogisticRegressionCV(Cs=Cs, cv = 5, scoring='neg_log_loss', class_weight='balanced',penalty='l1', solver='liblinear', multi_class='ovr')\n",
    "#lrcv_L1 = LogisticRegressionCV()\n",
    "lrcv_L1.fit(X_train, y_train)    \n",
    "# http://www.cnblogs.com/pinard/p/6035872.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: array([[-0.51323196, -0.51364424, -0.51370272, -0.51370939],\n",
       "        [-0.55803718, -0.55740525, -0.55736917, -0.55735474],\n",
       "        [-0.50394956, -0.50417579, -0.50421162, -0.50421384],\n",
       "        [-0.46677366, -0.46617898, -0.46612457, -0.46611956],\n",
       "        [-0.50349727, -0.50102047, -0.5007874 , -0.50078373]])}"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrcv_L1.scores_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4e31bab70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_Cs = len(Cs)\n",
    "n_classes = 2\n",
    "scores =  np.zeros((n_classes,n_Cs))\n",
    "min_class = 0 if(n_classes>2) else 1\n",
    "\n",
    "for j in range(min_class,n_classes):\n",
    "        scores[j][:] = np.mean(lrcv_L1.scores_[j],axis = 0)\n",
    "    \n",
    "mse_mean = -np.mean(scores, axis = 0)\n",
    "pyplot.plot(np.log10(Cs), mse_mean.reshape(n_Cs,1)) \n",
    "#plt.plot(np.log10(reg.Cs)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "pyplot.xlabel('log(C)')\n",
    "pyplot.ylabel('neg-logloss')\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 感觉和GridSearchCV得到的Score结果不太像。。。在logC为2.0的时候结果最优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.38802349,  1.1579107 , -0.12630341, -0.01722745, -0.12837755,\n",
       "         0.68161633,  0.37889382,  0.22728173]])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrcv_L1.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## L2正则"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[1, 10, 100, 1000], class_weight=None, cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=1, penalty='l2',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "\n",
    "Cs = [1, 10,100,1000]\n",
    "\n",
    "# 大量样本（6W+）、高维度（93），L2正则 --> 缺省用lbfgs，为了和GridSeachCV比较，也用liblinear\n",
    "\n",
    "lr_cv_L2 = LogisticRegressionCV(Cs=Cs, cv = 5, scoring='neg_log_loss', penalty='l2', solver='liblinear', multi_class='ovr')\n",
    "lr_cv_L2.fit(X_train, y_train)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: array([[-0.484467  , -0.4852822 , -0.48537255, -0.48538168],\n",
       "        [-0.50348613, -0.50402636, -0.50408678, -0.50409289],\n",
       "        [-0.4822051 , -0.48260695, -0.48265377, -0.48265852],\n",
       "        [-0.44119703, -0.44110411, -0.44109946, -0.44109905],\n",
       "        [-0.46551112, -0.46533553, -0.46532183, -0.4653205 ]])}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_cv_L2.scores_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4e31babe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_Cs = len(Cs)\n",
    "n_classes = 2\n",
    "scores =  np.zeros((n_classes,n_Cs))\n",
    "min_class = 0 if(n_classes>2) else 1\n",
    "\n",
    "for j in range(min_class,n_classes):\n",
    "        scores[j][:] = np.mean(lr_cv_L2.scores_[j],axis = 0)\n",
    "    \n",
    "mse_mean = -np.mean(scores, axis = 0)\n",
    "pyplot.plot(np.log10(Cs), mse_mean.reshape(n_Cs,1)) \n",
    "#plt.plot(np.log10(reg.Cs)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "pyplot.xlabel('log(C)')\n",
    "pyplot.ylabel('neg-logloss')\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 需要向左侧探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[0.001, 0.01, 0.1, 1], class_weight=None, cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=1, penalty='l2',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Cs = [0.001, 0.01,0.1,1]\n",
    "\n",
    "lr_cv_L2 = LogisticRegressionCV(Cs=Cs, cv = 5, scoring='neg_log_loss', penalty='l2', solver='liblinear', multi_class='ovr')\n",
    "lr_cv_L2.fit(X_train, y_train)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4e5ba0e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_Cs = len(Cs)\n",
    "n_classes = 2\n",
    "scores =  np.zeros((n_classes,n_Cs))\n",
    "min_class = 0 if(n_classes>2) else 1\n",
    "\n",
    "for j in range(min_class,n_classes):\n",
    "        scores[j][:] = np.mean(lr_cv_L2.scores_[j],axis = 0)\n",
    "    \n",
    "mse_mean = -np.mean(scores, axis = 0)\n",
    "pyplot.plot(np.log10(Cs), mse_mean.reshape(n_Cs,1)) \n",
    "#plt.plot(np.log10(reg.Cs)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "pyplot.xlabel('log(C)')\n",
    "pyplot.ylabel('neg-logloss')\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 在LogC为-1.0的时候，结果最好，损失最小"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## SVM 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/guanyu/.local/lib/python3.6/site-packages/sklearn/model_selection/_split.py:2026: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train_part, X_val, y_train_part, y_val = train_test_split(X_train, y_train, train_size = 0.8,random_state = 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## default SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "from sklearn.metrics import accuracy_score\n",
    "import sklearn.metrics as met\n",
    "\n",
    "SVC1 = LinearSVC().fit(X_train_part, y_train_part)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
      "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
      "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
      "     verbose=0):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.84      0.84      0.84        97\n",
      "          1       0.67      0.69      0.68        48\n",
      "\n",
      "avg / total       0.79      0.79      0.79       145\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[81 16]\n",
      " [15 33]]\n"
     ]
    }
   ],
   "source": [
    "#在校验集上测试，估计模型性能\n",
    "y_predict = SVC1.predict(X_val)\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (SVC1, met.classification_report(y_val, y_predict)))\n",
    "print(\"Confusion matrix:\\n%s\" % met.confusion_matrix(y_val, y_predict))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 线性SVM正则参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_Linear(C, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC2 =  LinearSVC( C = C)\n",
    "    SVC2 = SVC2.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC2.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.7793103448275862\n",
      "accuracy: 0.7931034482758621\n",
      "accuracy: 0.7931034482758621\n",
      "accuracy: 0.7931034482758621\n",
      "accuracy: 0.7931034482758621\n",
      "accuracy: 0.7448275862068966\n",
      "accuracy: 0.503448275862069\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4e2ff9400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份  \n",
    "#penalty_s = ['l1','l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "#    for j, penalty in enumerate(penalty_s):\n",
    "    tmp = fit_grid_point_Linear(oneC, X_train, y_train, X_val, y_val)\n",
    "    accuracy_s.append(tmp)\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "#for j, penalty in enumerate(penalty_s):\n",
    "pyplot.plot(x_axis, np.array(accuracy_s), 'b-')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('SVM_Otto.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RBF核SVM正则参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC\n",
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6827586206896552\n",
      "accuracy: 0.8137931034482758\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.7793103448275862\n",
      "accuracy: 0.8206896551724138\n",
      "accuracy: 0.9655172413793104\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.8413793103448276\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 0.8068965517241379\n",
      "accuracy: 0.9241379310344827\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-2, 2, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-2, 2, 5)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_val, y_val)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 从结果来看，有两部分随着gamma增大而减小，所以应该逐步调整gamma，感觉对照上面的曲线图，也能看出来是因该取-2~0之间边界比较稳定"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.7172413793103448\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.7724137931034483\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.8206896551724138\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.7793103448275862\n",
      "accuracy: 0.8068965517241379\n",
      "accuracy: 0.8413793103448276\n",
      "accuracy: 0.9655172413793104\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-2, 0, 4)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-2, 0, 4)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_val, y_val)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 感觉还是有过拟合，接着向左边调整"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.6689655172413793\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.7862068965517242\n",
      "accuracy: 0.8\n",
      "accuracy: 0.8\n",
      "accuracy: 0.8\n",
      "accuracy: 0.8\n"
     ]
    }
   ],
   "source": [
    "C_s = np.logspace(-2, 2.5, 4)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-2, -1.998, 4)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_val, y_val)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 最终调整的结果如上"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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lCih06ZN00OHDmnVqlV1586dmpCQoN26ddPu3bu79zdhwgStXbu2Vq9eXbdu3epe//vvv2twcLAWK1ZMf/jhB/f68+fPa2hoqBYrVkxfeumlC2K77777tEKFCnrLLbfomTNn8tUxli1bpj179lTVzM+C7czCi8x8uTcVjsOpnu0pUqxk5h1MtqUvUR4WFsZ///tfduzYcUGJ8u+//979Te1apS9R7ufn5y5Rnra+TJkyFCxYkB49erj77Nu3z11vKaMS5WnOnz/PoEGDaNCgAb179yY6+q/izGklygsXLnxJifL0Z0gZlSj38fFxlygHmDJlCo0bN6Zx48bExMRccJy0EuXZNXnyZMaPH094eDjnzp1zP/NiyJAhVKpUifDwcJ599llatGhBgQIFKF++PO+++y49evTg5ptvplatWu5v2wCPP/44sbGxjBgxglGjRrnXt2zZkg0bNrB06VJGjhxJQkIC8FdByN27d/P7778TExPj7vPZZ5+xb98+6tSpw9dff51vjpGSksIzzzzjfqaJJ9kQnRy0afUi6v62jy21fOn65ASnw8k5HUdn3sYBqlaiPLdKlGdFcHCw+1kX0dHRzJo1CwA/Pz8mTPjr76Fp06YEBAQA0K1bN3d12vfee48iRYpcst++ffvyxBNP8NFHH12wvn79+hQsWJDo6OgLYixTpgxt2rRh9uzZF8ye9/X15Z577uGdd97h/vvvzxfHuOOOO4iOjuamm24CYP/+/XTq1IkZM2a4n6OSU+zMIgetG/EEfklQ8XGrtpkbrET51cluifKsOnjwIJB6TX3EiBE89NBDQOq/y5kzZ4DUe0zFixenbt26F/Q5evQo77//vvv+ypYtW9z7/fHHH6lXrx4A27dvd99X2b59O1u3bqVmzZocPHiQEydOAHDmzBnmzZtHYGAgKSkp7v8fqsqPP/5IYGBgvjlG2bJlOXz4MDt27GDHjh1EREQwc+bMHE8UYGcWOebX/40naP051ocXp1fH/k6Hc11IX6I87RR+1KhRFClShLvuuovz58+TkpJyQYnyv/3tb4wdO5Zp06bh7+9/VcdLX6JcVenSpQudO3cGcJcor1q16iUlytPfYE4rUV6iRAluuummC0qU9+jRgylTpnDrrbd6vER57dq1s1yiPO21nzlzhsTERL755hvmzZtHvXr1GDBgAE888QRhYWF8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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe4e2fe2710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('py.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 最终结果来看，与logistic进行比较，大约比logistic高了0.02的正确率（这里取的是稳定状态的0.78的正确率）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
